2016-05-04 4 views
0

shouldComponentUpdateの実装の一部として、わかりやすい計算が必要です。また、render実装の一部として同じ計算を行う必要があります。 shouldComponentUpdateで計算結果を取得し、render実装に再利用したい、つまり同じ値を2回計算しないようにしたいと考えています。shouldComponentUpdateでのリアクタ - キャプチャの中間

これを実装するための推奨方法はありますか?

+0

.. componentWillReceiveProps()後に呼び出されるので、これは動作するはず? –

+0

'shouldComponentUpdate'はコンポーネントの状態を変更できますか?私は技術的にそれができることを知っているが、私はそれがすべきであるかどうかはわからない。また、 'this.state'は、' render'するときに上書きされるかもしれません。 –

+0

答えはありませんが、計算が簡単でない場合は、なぜshouldComponentUpdate()でそれを必要としますか? 'shouldComponentUpdate'の背後にあるアイデアは、追加のパフォーマンスのためにレンダリングを実行する必要があるかどうかの追加チェックです。機能面では、shouldComponentUpdateは必要ありません。厳密に言えば、shouldComponentUpdateは些細な計算しか含んでいないはずです。 – wintvelt

答えて

1

これを行うための最善の方法は、のようなあなたのコンポーネントの中に独自のsetState()ラッパーを定義するために、おそらくです(申し訳ありませんが、これはより多くのコメントのようにする必要がありますが、私は十分に担当者を持っていません)この新しいメソッドは、setState()と、componentWillReceivePropsから呼び出します。

ラッパーは、現在のすべての小道具と州だけでなく、あなたが渡した新しい小道具や状態にアクセスすることができます。そうすれば、必要な計算を行うことができます。

また、最初のラウンドではgetInitialState()からdoStuff()に電話する必要があります。

この設定では、すべてのレンダリングで1回だけ計算が行われます。結果はshouldComponentUpdate()で確認できます。反応のライフサイクルで

shouldComponentUpdate()は、多分それは、コンポーネントの状態の一部であるべき

0

componentWillReceivePropsで処理し、そこに状態を計算結果で更新できますか?

setMyState(newProps, newState) { 
    var nonTrivialResult = doStuff(newProps, newState); 
    newState.checkSum = nonTrivialResult; 
    this.setState(newState); 
} 

そしてコール:

+0

'props'アップデートでは動作しますが、' state'アップデートでは動作しません。 –

関連する問題