我有一个React / Redux应用程序,它接收来自服务器的帖子。到目前为止,我在我的reducer中得到了RECEIVE_POSTS,如下所示:
function posts(
state = {
items: []
},
action
) {
switch (action.type) {
case RECEIVE_POSTS:
return Object.assign({}, state, {
items: action.posts,
})
case ADD_POST:
default:
return state
}
}
现在对于其他情况,我正在努力使用Object.assign
语法。如何在ADD_POST情况下更新状态,其中action.post
中包含的新创建的帖子将附加到现有项目?
答案 0 :(得分:2)
假设CREATE_POST
根据接收的帖子数据引用ADD_POST
,它将如下所示:
case CREATE_POST:
return {...state, items: state.items.concat(action.post)};
无需使用对象分配,因为您可以使用您所在州的现有帖子concat
发帖。提醒一下,concat
不会改变状态,它会返回一个添加了post
的新数组。
答案 1 :(得分:1)
这是假设正在传递数组中的单个帖子
function posts(
state = {
items: []
},
action
) {
switch (action.type) {
case RECEIVE_POSTS:
return Object.assign({}, state, {
items: action.posts,
})
case CREATE_POST:
return Object.assign({}, state, {
items: [...state.items, ...action.post]
})
default:
return state
}
}