我想将一个帖子添加到化简器中的帖子数组中。 通常我会这样做:
CREATE_NEW__POST_SUCCESS: {
return {
...state,
fetchingPosts: false,
error: null,
posts: [...state.posts, ...action.payload],
};
但是我当前的项目要求我使用Immutable.js 使用Immutable,状态可以通过.set()或.merge()或.update()
设置case CREATE_NEW_POST_SUCCESS: {
return state
.set('fetchingPosts', false)
.set('posts', action.payload)
.set('postsError', null);
这仅用一个post对象覆盖了整个数组数组。 我尝试了很多类似
.set('posts' ,[...state.posts, ...action.payload])
但没有喜悦
答案 0 :(得分:1)
您可以使用updateIn
类似于答案here。
case CREATE_NEW_POST_SUCCESS: {
return state
.set('fetchingPosts', false)
.updateIn(['posts'], posts => posts.push(action.payload))
.set('postsError', null);
答案 1 :(得分:0)
我认为state.merge()
和concat()
在这里可以工作:
case CREATE_NEW_POST_SUCCESS: {
return state.merge({
fetchingPosts: false,
posts: state.get('posts').concat(action.payload),
postError: null,
})
}