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