在React中,我们有一个最佳实践,即不直接修改状态,即突变... 在Redux ...
中也很重要/* initial state */
export const usersStartState = { users: { isLoggedIn: false } }
export default function users(state = usersStartState, action) {
switch (action.type) {
case actionTypes.users.IS_LOGGED_IN:
return Object.assign({}, state,
state.users.isLoggedIn = true)
case actionTypes.users.IS_LOGGED_OUT:
return Object.assign({}, state,
state.users.isLoggedIn = false)
default:
return state
}
};
上面的方法不起作用,但是有人可以帮助我如何正确更新该嵌套对象属性吗?
答案 0 :(得分:1)
您可以做到
return {...state, users:{...state.users, isLoggedIn : true}}
答案 1 :(得分:1)
看起来您既在改变状态又在返回新的状态对象。您通过说(1, 3)
来改变状态,但是通过执行state.users.isLoggedIn = ..
返回一个新的状态对象。
相反,也许只是做
return Object.assign(...)
一种替代方法是创建状态副本并对其进行修改
case actionTypes.users.IS_LOGGED_OUT:
return { ...state, users: { ...state.users, isLoggedIn: false }};