我有一个外部的(组件的)可观察对象,我想监听它的变化。当对象更新时,它会发出更改事件,然后我想在检测到任何更改时重新渲染组件。
对于顶级,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 组件是否需要有状态才能重新渲染?有没有办法强制组件按需更新而不改变状态?