Реагируйте на Redux, обновите часть состояния с помощью immutability-helper update - PullRequest
0 голосов
/ 30 августа 2018

В моем состоянии редуктора я хочу обновить атрибут внутри объекта объектов.

    {
    users:{
        '1':{id:'1', name:'', items:[], ....}
        '2':{id:'1', name:'', items:[], ....}
         ...
         }
    }

Я хочу обновить, например, items в объекте с ключом 1 or 2 или любым другим ключом и остальной частью состояния нетронутыми. действие содержит номер ключа как action.id, а action.payload содержит строку.

Я запутался, как работают spread и update и как сохранить остальные users объекты нетронутыми.

конечно, мой код неверен :) но я попробовал

case types.UPDATE_ITEMS: {
      return update(...state, {
        [action.id]: { items: { $set: action.payload } }
      });
    }

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

это именно то, что используется update, оно не затронет оставшуюся часть состояния. чтобы не было необходимости в распространении

   case types.UPDATE_ITEMS:
          return update(state, {
            [action.id]: {
              items: { $set: action.payload }
            }
          });
0 голосов
/ 30 августа 2018

Вы можете обновить только часть users, используя оператор распространения покоя, например:

case types.UPDATE_ITEMS:
  return {
    ...state, // That will keep any other keys in the object besides 'users'
    users: {
      ...state.users, // keep the part you want to keep from 'users',
      [action.id]: {
        ...state.users[action.id], // keep the part you want from this user
        items: [action.payload] // update the part you want
      }
    }
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...