2016-09-21 16 views
0

私は現在、Redux-ReducersでImmutable.jsを使用するReact-Applicationに取り組んでいます。レジューサーは、それが変更されていない場合は、前の状態を参照として戻します(推奨)。 以前の状態と次の状態を比較した場合(state===nextState)参照は変更されていないため、trueを返します。shouldComponentUpdateの小道具を比較するためにReact-ReduxアプリケーションでImmutable.jsを使用することは可能でしょうか?

還元剤が状態を変更した場合、新しいImmutable.jsマップが返されます。

これは新しいマップであるため、今度は同じ比較を行うとfalseを返します。

どうやってshouldComponentUpdate内の小道具変更をそのように検出するのは合理的でしょうか?

もしそうなら、自分のshouldComponentUpdateメソッドを使用するためにreact-redux connect関数を変更する方法がありますか?明らかに、Immutable.jsオブジェクトをコンポーネントに渡すことはできません。

+0

ようこそ。議論されただけではなく、答えることができる質問が好まれます。何を尋ねるか、どうやって見たらヘルプセンターにアクセスして[このツアー](http://stackoverflow.com/tour)をご覧ください。 –

答えて

1

mapStateToPropsでは、この不変のiterableを同等のJSオブジェクトに変換せず、そのままの状態でimmutableオブジェクトを渡してください。あなたはそれを達成することができます。例えば

代わりの部品の状態から任意のデータにアクセスするための

const mapStateToProps = (state) => ({ ...(state.toJS()) }); 

ウェイ:this.props.data

あなたはまた、のように書くことができます。

const mapStateToProps = (state) => ({ state }); 

ウェイコンポーネント内の状態からのデータにアクセスする:this.props.state.get('data')

関連する問題