我有一个外部的(组件的)可观察对象,我想监听它的变化。当对象更新时,它会发出更改事件,然后我想在检测到任何更改时重新渲染组件。
对于顶级,React.render这是可能的,但在组件中它不起作用(这有一定的意义,因为该render方法只返回一个对象)。
这是一个代码示例:
export default class MyComponent extends React.Component {
  handleButtonClick() {
    this.render();
  }
  render() {
    return (
      <div>
        {Math.random()}
        <button onClick={this.handleButtonClick.bind(this)}>
          Click me
        </button>
      </div>
    )
  }
}
在内部单击按钮会调用this.render(),但这并不是真正导致渲染发生的原因(您可以看到这一点,因为 由 创建的文本{Math.random()}不会改变)。但是,如果我只是调用this.setState()而不是this.render(),它工作正常。
所以我想我的问题是: React 组件是否需要有状态才能重新渲染?有没有办法强制组件按需更新而不改变状态?