2016-12-25 15 views
1

私はちょうどcomponentWillUpdateがトリガーする場所を考え出すのにいくつかの問題を抱えていました。ドキュメントはレンダリングの前にトリガします。しかし私のコンポーネントでは、唯一の小道具の変更はdefaultValueです。これはudpateのDOMには影響しません。だから私はどのように私のcomponentWillUpdateがトリガーされていますか?私はそれが実際にバーチャルDOMを変更したかどうかを調べるために小道具/州がテストされた後にのみトリガされたと考えていました。componentWillUpdateの後にvritual dom diffingが実行されましたか?

+0

これらは2つの異なるものです。 diffは、レンダリング後に実行され、小道具が変更されるたびに 'update'が実行されます(' componentWillUpdate'で 'false'を返さないようにすることができます)。 –

+0

おかげで@FezVrastaは面白いです。それはfalseでコンポーネントWillUpdateで戻ってくるのを防ぐことができます "してください?そして、 'compoentWillUpdate'は、' compoentWillReceiveProps'(状態パラームとcomponentWillUpdateの予防を無視して)とはまったく異なっていませんか? – Noitidart

+1

申し訳ありませんが、私は['componentShouldUpdate'](https://facebook.github.io/react/docs/react-component.html#shouldcomponentupdate) –

答えて

2

ComponentWillUpdate()は、DOMが更新されるかどうかに関係しません。これは、レンダリングされる前にあなたの小道具にいくつかの操作を実行するためのフックとしてのみ使用されます。小道具が変更された場合にコンポーネントがレンダリングされないようにするには、shouldComponentUpdate() note ComponentWillUpdate()は最初に実行する(マウントする)ときに呼び出されません componentWillMount()

+0

ありがとうDirtyRedz、あなたは/レンダリングであなた/文書の意味を説明pleae。 virutal domがdiffedされた後に、それが更新されるように仮想domに変更があると決定したのですか?小道具が変更されていない場合と同様に、それは引き起こすでしょうか? – Noitidart

+1

最初にレンダリングすると、htmlがdomにマウントされます。それ以降のレンダリングでは、バーチャルドームの相違点を確認します。 – DirtyRedz

+1

レンダリングは効果的に呼び出され、子コンポーネントがレンダリングされます。そのため、メソッドshouldComponentUpdateが提供され、レンダリングの数を減らすことができます。アプリが非常に大きく、レンダリングチェックの大部分を必要としないようにします。中小のアプリではこれは問題ではありません – DirtyRedz

関連する問題