19
setStateを呼び出さずにReactコンポーネントを強制的に再レンダリングできますか?
変更をリッスンしたい外部(コンポーネント)の監視可能なオブジェクトがあります。オブジェクトが更新されると、変更イベントが発生し、変更が検出されたときにコンポーネントを再レンダリングします。 トップレベルでは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コンポーネントは再レンダリングするために状態を持つ必要がありますか?状態を変更せずにコンポーネントをオンデマンドで更新する方法はありますか?