我想使用id替换对象数组中的对象,以找到它, 有效负载具有新对象
const initialState = {
allComments: []
};
case LIKE_COMMENT:
let index = state.allComments.findIndex(
value => value._id === payload._id
);
if (index === -1) {
return {
...state,
allComments: [...state.allComments, ...payload]
};
} else {
return {
...state,
allComments: [
(state.allComments[index] = payload),
...state.allComments
]
};
}
问题在于,它不断推动该对象而不替换上一个对象
答案 0 :(得分:2)
cover
这会将注释替换为有效负载,并返回所有其他注释
答案 1 :(得分:1)
我认为您实际上需要根据旧数组定义一个新数组,然后将其返回到状态:
nginx: [emerg] bind() to unix:/var/run/nchan.sock failed (98: Address already in use)
答案 2 :(得分:1)
您可以使用map创建allComments数组的浅表副本,将匹配索引替换为有效负载:
case LIKE_COMMENT:
return {
...state,
allComments: state.allComments.map(c => c._id === payload._id ? payload : c)
};