2017-02-01 3 views
-1

Работа над проектом типа ng2. Это должно было быть просто. Мне нужно поставить Map<string, Relationship> в магазине, но по какой-то причине это не сработало: я сделал следующее отлаживать:Как обращаться с типом карты в редукторе

case relationActions.ActionTypes.SET_RELATIONSHIPS: { 
    console.log('reducer'); 
    console.log(action.payload); 
    return Object.assign({}, state, { 
    relationShips: action.payload 
    }); 
} 

Журнал показывает Map, что я жду там, Но перевождь DEV инструмент показывает:

relationShips(pin): null => {} 

это потому, что Object.assign() не может справиться с Map? Какое решение?

ответ

0

Pure Javascript Map являются изменяемыми, и вы не должны использовать его как состояние редуктора.

Если вы действительно хотите использовать структуру карты, вы должны взглянуть на Immutable.js (->Map).

Если вы не хотите использовать Immutable.js, вы должны иметь состояние подобное для имитации содержимого карты:

{ 
    [`yourId1`]: 'value 1', 
    [`yourId2`]: 'value 2', 
    // ... 
} 

и манипулировать ею с Object.assign.

+0

не должен или не мог? может 'Object.assign' обрабатывать' Map'? – InsaneBot

+0

Я так не думаю. Вот почему Immutable js может стать удобным – Maxime

Смежные вопросы