2016-07-20 3 views
1

Для этапа редуктора redux: Что делать, если я хочу изменить только одно свойство initial_state. Например:Как вернуть состояние редукторов Redux

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

Здесь я только хочу, чтобы установить signInInfo.signin в true, в настоящее время, единственный способ, которым я знаю, чтобы ввести полный "signInInfo", как:

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

action.payload.data, как:

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

И еще один вопрос: если я хочу установить signInInfo.signin как false, а между тем также необходимо изменить changePassword.status от false до true. Что мне делать? Может ли кто-нибудь дать мне подсказку?

ответ

1

довольно простой (оба вопроса):

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

я столкнулся с новой проблемой: если есть массив объектов в состоянии, и я только хочу, чтобы установить, как обры [0] .flag истинно, то, я должен делать? Я просто не знаю, как представить 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

Смежные вопросы