2016-06-19 11 views
0

componentWillMountの機能を持つ親クラスコンポーネントがあり、それは文字列のリストをループし、それぞれの要素を作成し、最後にsetStatethis.state.mapに作成します。各子要素は、this.state[element]と呼ばれる親状態の小道具を受け取ります。React Propsが更新されない

私はこれらの要素をthis.state.mapに入れたのは、毎回(痛いほど遅い)配列を再レンダリングしなくても、(一部の)上位コンポーネントを変更することができたからで、shouldComponentUpdateを使いたくなかったからです。また、将来的には、さまざまなマップ状態を切り替えることで要素を素早く変更できます。

親のthis.state[element](これは、最初のcomponentWillMountの小道具として子に渡されます)が変更されたとき、子の小道具は更新されません。しかし親の状態は変わる。

これは正当な方法ですか? 申し訳ありませんがコードサンプルを提供していません。それはちょうど今そのような混乱です。

答えて

0

ReactDOM.render(およびサーバサイドレンダリングなど)、setState、またはforceUpdateのみが子プロセスを再レンダリングします。状態オブジェクトを突然変異させているだけの場合、Reactはこれを認識せず、再レンダリングしません。とにかく、setStateを介さずに状態を変更することは有効ではありません。できるだけ不変な状態を保つようにしてください。あなたの子供の変化を見るためには、this.state[element]を更新するにはsetStateを使用する必要があります。リアクトドキュメントから

注: がSETSTATEを呼び出すよう、直接this.stateを変異決して()、その後、あなたが作った突然変異を交換することができます。それが不変であるかのようにthis.stateを扱う。

+0

私はreactaddons-updateを使用して状態を更新してからsetStateを使用しています。 – cocacrave

関連する問題