2016-07-20 23 views
1

還元レデューサーのステップ: initial_stateの1つのプロパティを変更したい場合はどうすればよいですか?たとえば:Reduxレデューサーの状態を返す方法

const INITIAL_STATE = { 
    signInInfo: { 
    signin: false, 
    name: "", 
     email: "", 
    ... 
    }, 
    changePassword: { 
    status: false, 
    ... 
    } 
    ... 
}; 

ここで私が唯一trueとしてsignInInfo.signinを設定する、現在、私が知っている唯一の方法は、入力にあるような完全な "signInInfo":

case SIGNIN_USER: 
    return { ...state, signInInfo: action.payload.data }; 

action.payload.dataは次のようです

{ 
    signin: true, 
    name: "Qing", 
    email : ... 
} 

もう1つの質問は、signInInfo.signinfalseと設定し、その間にも0を変更する必要がある場合です。からfalseからtrueまでである。 どうすればよいですか?誰も私にヒントを与えることができますか?

答えて

1

(両方の質問)かなりシンプル:

case SIGNIN_USER: return { 
    ...state, 
    signInInfo: { 
     ...state.signInInfo, 
     signin: action.payload.signin 
    }, 
    changePassword: { 
     ...state.changePassword, 
     status: true 
    } 
    }; 
+0

私は新しい問題が発生しました:状態のオブジェクトの配列がある場合、私は唯一の[0]をtrueに.flag ARRのように設定したい場合、どのような私はする必要がありますか?私はちょうど上記のような表現のarrを表現する方法を知らない。ありがとうございました! – user6557921

+0

'return [{... state [0]、flag:action.payload}、... state.slice(1)];' https://github.com/reactjs/redux/blob/master/examples/ todos-with-undo/src/reducers/todos.js#L33 http://redux.js.org/docs/basics/Reducers.html – DDS