javascript map.set не работает при попытке добавить новое свойство в состояние избыточности - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть список карт, подобных приведенным ниже, в моем состоянии избыточности

[
   {
       "id": "id1",
       "code": "code0"
   },
   {
       "id": "id2",
       "code": "code1"
   }
]

Я не могу добавить новое свойство в приведенный выше список карт.Ниже приведен код, который я использую для добавления нового свойства на карту

case SET_NEW_PROPERTY: {
   const a = currentState.get('reduxstate')
   a.forEach((mapObj, index) => {
      mapObj.set('newproperty', 'value')
   }
   return currentState.set('reduxstate', a)
}

Я не уверен, почему набор не работает.Любая помощь приветствуется.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы должны использовать plain object в избыточном хранилище. В этом случае добавьте новое свойство в Map состояние не изменилось, это та же ссылка на Map.

При подключении к Pure React Component, поскольку реквизиты не изменились, пользовательский интерфейс не будет обновляться.

И отметьте, что при попытке добавить свойство к plain object в редукторе вы должны вернуть новый объект, или вы можете использовать combineReducers, он будет автоматически возвращать новый объект при изменении любого значения свойства.

0 голосов
/ 13 сентября 2018

ОБНОВЛЕНО: Вы можете использовать оператор распространения и карту.что-то вроде этого

state = [
          {
             "id": "id1",
             "code": "code0"
          },
          {
             "id": "id2",
             "code": "code1"
          }
        ];

, затем просто добавьте новый объект, подобный этому

[
  ...state,
    {
      "id": "id3",
      "code": "code3"
    }
]

ОБНОВЛЕНИЕ: Однако, если вы хотите добавить новое свойство на карту, вы можете сделать это.

const newState = state.map( item => ({ ...item,  "newProperty": "newvalue",  }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...