我有一个外部(组件),可观察的对象,我想听其变化。当对象被更新时,它发出更改事件,然后我想在检测到任何更改时重新呈现该组件。
对于顶层,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()
,它就可以正常工作。
So I guess my question is: do React components need to have state in order to rerender? Is there a way to force the component to update on demand without changing the state?
您可以使用forceUpdate()进行更多详细信息检查(forceUpdate())。