2017-11-28 8 views
1

私は反応を使用するとき、私はこれらの2つのライフサイクルが似ていることがわかりますcomponentWillReceiveProps引数としてnextPropsを受け取るshouldComponentUpdateはnextPropsとnextStateを引数として受け取りますので、shouldComponentUpdateは同じことをやります。である - 新しい小道具がコンポーネントに渡されます、あなたがなぜ、componentWillReceivePropsメソッドとshouldComponentUpdateメソッドの両方を保持しますか?

がshouldComponentUpdateが新しい小道具の状態に応じてアクションをトリガすることができたときに、これが呼び出された関数名状態など - これらの2つの方法

+1

おそらく、ドキュメントを読んでください。これらの2つのライフサイクル機能は同じ小道具を受け取りますが、異なる機能を提供し、異なるトリガーを持ちます –

+0

'shouldComponentUpdate'は、アップデートを受け入れるか、または拒否するために使用されます。小道具が変更された場合、コンポーネントを再度レンダリングしたくない場合がありますので、falseを返します。 componentWillReceivePropsは、あなたが現在持っている小道具と、次の小道具がどうなるかを確認する方法です。 'componentWillReceiveProps(nextProps){}'。 – Dan

+3

この質問に対する回答は、Reactのドキュメント –

答えて

0

componentWillReceivePropsの違いは何だろうコンポーネントツリーを再レンダリングすべきかどうかを決定するフィルタ関数。

shouldComponentUpdate意志:この機能は、再レンダリング

詳細情報here

2

彼らは、2つの異なる役割を持っており、さまざまな状況で実行を必要としないが起こっている、あなたが変更、追加、フィルタとして機能することができ国家の支柱や何かが変わるたびに呼び出される(あるいはリアクションは変化したと思う)。関数は、コンポーネントが再描画する必要がある場合はtrue(これはデフォルトの戻り値)またはfalseを返して、コンポーネントが再レンダリングするかどうかを判断することです。 現在の状態と次の状態と小道具にアクセスして、実際に再レンダリングするかどうかを比較し、判断することができます。他の理由でこのメソッドを使用すべきではありません。

componentWillReceivePropsは、小道具が変更された(または変更されたように見える)場合にのみ呼び出されます。状態のみが変更された場合、このメソッドは呼び出されません。 また、コンポーネントが再レンダリングするかどうかは決定されません。このメソッドを使用すると、たとえば、状態を変更したり、API呼び出しを行うことができます。

これらのリンクをチェックアウト:

componentWillReceivePropshttps://developmentarc.gitbooks.io/react-indepth/content/life_cycle/update/component_will_receive_props.html

shouldComponentUpdatehttps://developmentarc.gitbooks.io/react-indepth/content/life_cycle/update/using_should_component_update.html