kay*_*ayq 3 javascript reactjs redux react-redux
例如,在道具中,我有一个名为“用户”的对象,该对象设置为:
user = { id: 1,
name: jim,
email: jim@gmail.com,
entries: 4,
joined: 07-16-2018
}
Run Code Online (Sandbox Code Playgroud)
我想让 UPDATE_USER_ENTRIES 操作仅使用有效负载将更新分派给 user.entries
我目前的减速器功能是这样的:
export const loadUserData = (state = initialStateUser, action = {}) => {
switch(action.type) {
case LOAD_USER:
return Object.assign({}, state, {
user: {
id: action.payload.id,
name: action.payload.name,
email: action.payload.email,
entries: action.payload.entries,
joined: action.payload.joined
}
});
case UPDATE_USER_ENTRIES:
return {...state, **// NEED HELP HERE** };
default:
return state;
}
}
Run Code Online (Sandbox Code Playgroud)
为了返回仅更新条目属性的新用户对象,编写返回值的正确方法是什么?谢谢!
您可以像这样使用扩展运算符:
如果你的状态是这样的:
state = {
foo: "bar",
user: {
id: 1,
name: "jim",
email: "jim@gmail.com",
entries: 4,
joined: "07-16-2018",
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码,传播状态,不要触摸foo,传播状态user,更新entries属性。
case UPDATE_USER_ENTRIES:
return {...state, user: {...state.user, entries: action.payload } };
Run Code Online (Sandbox Code Playgroud)
如果您的状态如下所示:
user: {
id: 1,
name: "jim",
email: "jim@gmail.com",
entries: 4,
joined: "07-16-2018",
}
Run Code Online (Sandbox Code Playgroud)
上面的代码只传播状态user,然后更新entries属性。
case UPDATE_USER_ENTRIES:
return {...state, entries: action.payload };
Run Code Online (Sandbox Code Playgroud)
您的有效负载仅包含一个值:userEntries因此它仅等于 userEntries。因此,在您的减速器中,您需要根据以下内容使用它:action.payload您的有效负载不是一个包含userEntries值的对象。
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |