2016-08-11 28 views
0

Redux.jsをReact.js(React-Redux)で使用しており、レデューサーで次のコードを使用しています定型を減らすためにReduxの-アクション):Redux/React-Redux - レデューサーで "state = XXX"を使用

const update = require('react/lib/update'); 
const myReducer = handleActions 
({ 
    [myAction]: (state, action) => { 
     state = update(state, { 
      something: {$set: !state.someProperty} 
     }); 
     return someFunction(state); 
    } 
}) 

我々はReact Immutability Helpersからupdateを使用しますがstate =を使用して状態に結果を代入しています。

これはbasic Redux guidlinesとは異なりますか?つまり、状態が変異していますか?それはそうですが、コードは完全に速く動作するようですが、redux devtoolsは状態の変化を正しく示しています...

答えて

1

です。実際には、 state変数はを指します。代わりに、別のオブジェクトを指すようにstateという名前のローカル変数を更新するだけです。

変数と参照がJavascriptでどのように機能するかを理解することが重要です.Javascriptを使用すると、ここで行われていることを明確にすることができます。

個人的には、わかりやすくするためにconst newState = update(....)を行うことをおすすめします。

+1

ありがとう、今私はそれを得た!ローカル変数 'state'の**コンテンツ**(' push 'やプロパティの設定など)を変更すると**実際の状態オブジェクトが変更されるため、混乱しました。しかし、他のものへの参照を変更することによって、JSは元のオブジェクトを変更せず、ローカル変数の参照を変更します。良い :-) –

関連する問題