2017-11-01 13 views
3

setStatecomponentWillMountに呼び出すと、renderメソッドに存在することが保証されていますか?注コールバックでsetStateを呼び出すのではありません。は、ComponentWillMountで呼び出されたsetState後のレンダリングで保証された状態です

Facebookの状態: "render()の前にcomponentWillMountが呼び出されているため、このメソッドで同期してsetState()を呼び出すと余分なレンダリングがトリガーされません。

「余分なレンダリングを起動しない」ということは、this.statecomponentWillMountに設定されたものになることを意味しますが、そのような場合は完全にはわかりません。誰かがもっと光を浴びせますか? (setStateは、非同期操作ですので、私はレースの条件を導入していますかはわからないか、レンダリングのライフサイクルメソッドがcomponentWillMountsetState後に保証されている場合)。たとえば

class Blah extends Component { 
    componentWillMount() { 
     this.setState({ someState }) 
    } 
    render() { 
     // this.state.someState <--- guaranteed to be the value I set in componentWillMount? 
    } 
} 

答えて

0

はいReactのドキュメントに記載されているように余分なレンダリングは不要です:

componentWillMount()は、マウントが行われる直前に呼び出されます。 render()の前に呼び出されるため、このメソッドでsetState()を同期的に呼び出すと、余分なレンダリングがトリガーされません。

参考:https://reactjs.org/docs/react-component.html#componentwillmount

関連する問題