如何在reducer中访问redux状态数组属性而又不遍历状态

时间:2019-08-30 14:07:57

标签: reactjs redux

以下代码在化简器中增加一个值。我想知道他们是否是这样做的更好方法,而不是遍历数组然后从那里设置属性。

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是我也想轻松访问的属性。

1 个答案:

答案 0 :(得分:0)

您可以将store.images的结构更改为Object,并通过设置图像的ID和值来键入。然后在化简器中,您可以使用images[action.data]查找它。

当您将其传递到组件中并需要一个数组时,可以将Object.values(state.images)memoized selector一起使用,因此只有在images对象实际更改时才重新计算它。 / p>