2017-05-10 10 views
1

だから私は、ルート・コンポーネントは、クラスベースであり、次のような状態を保持して反応させるアプリを持っている:dataAが渡さ* *機能コンポーネントを更新するためにそのデータが変更されていないないようにしたときにどのように

this.state = { 
    dataA: { //stuff here}, 
    dataB: { //stuff here} 
} 

を子機能コンポーネントAに転送され、dataBが子機能コンポーネントBに渡されます。

ただし、いつでもthis.setState({dataA: { new state A cotnent }})を実行すると、コンポーネントBはデータが変更されていなくても更新されます。

成分Bは、機能部品であるので、私はshouldComponentUpdateメソッドを実装することができません。したがって、dataAだけが変更された場合、コンポーネントBをレンダリングしない方法がありますか?ありがとう!

+1

可能な複製:http://stackoverflow.com/questions/38383832/react-optimization-of-stateless-functional-components-through-shouldcomponentup –

+0

完全なReactコンポーネントとして実装することはできませんか? –

答えて

0

彼らは小道具や状態を受信したときの機能コンポーネントは、常に値が変更されていない場合でも、再度レンダリングので、これは不可能です。

代わりに、機能コンポーネントの子をPureComponentというサブクラスに変換することをお勧めします。shouldComponentUpdateを実装すると、小道具と状態を比較することができます。 PureComponentsのすべての子もPureComponentsであるべきであり、これらの条件があまりにも制限されている場合は、ComponentのサブクラスでshouldComponentUpdateを自分で実装する必要があることに注意してください。

関連する問題