首页 > 解决方案 > 数组内不可变的 redux 对象更新

问题描述

我有以下对象结构数组,并且基于 API 响应,我想向所有嵌套对象插入一个新的键值对。我在下面用我的解决方案改变嵌套对象吗?如果是,那么符合不可变更新模式的更好实现是什么?

减速机结构

[{
    recordID: '4B6987A1-4179-426A-B38A-8B122995D0F8:ABPerson',
    givenName: 'A',
    middleName: '',
    familyName: '',
    phoneNumbers: [{ label: 'mobile', number: '12345679' }],
}]

传入数据结构

[{
        recordID: '4B6987A1-4179-426A-B38A-8B122995D0F8:ABPerson',
        givenName: 'A',
        middleName: '',
        familyName: '',
        isUser: true,    // the new key-value pair
        phoneNumbers: [{ label: 'mobile', number: '12345679' }],
}]

我目前更新商店的方式

case GET_NON_USERS_SUCCESS: {
      const newArr = state.inMemoryContact.map((record, index) => {
        return {
          ...record,
          ...action.payload.getNonUsers[index]
        };
      });

      return {
        ...state,
        inMemoryContact: newArr
      };
    }

这是动作

const getNonUsersSuccess = data => ({
  type: GET_NON_USERS_SUCCESS,
  payload: data
});

标签: javascriptreactjsreduxreact-redux

解决方案


推荐阅读