以下代码在化简器中增加一个值。我想知道他们是否是这样做的更好方法,而不是遍历数组然后从那里设置属性。
action.data = the post id
减速器
case POST_LIKE_SUCCESS:
let newVote2 = {...state}
console.log(newVote2.images)
return {
...state,
images: state.images.map((image, idx) => {
const disLike = parseInt(newVote2.images[idx].likeCount) + 1
// instead of referring to [0] well just use idx
if (image.id === action.data) {
return {
...image,
user: {...image.user},
likeCount: disLike
};
}
return image;
}),
};
likeCount是我也想轻松访问的属性。
答案 0 :(得分:0)
您可以将store.images
的结构更改为Object
,并通过设置图像的ID和值来键入。然后在化简器中,您可以使用images[action.data]
查找它。
当您将其传递到组件中并需要一个数组时,可以将Object.values(state.images)
与memoized selector一起使用,因此只有在images
对象实际更改时才重新计算它。 / p>