2016-08-01 2 views
0

Мне нужно изменить систему для сбора активов, чтобы позволить пользователю выбирать несколько активов. В настоящее время мы добавим один идентификатор объекта для производства ID карты, как это:immutable js - создать или обновить список, вложенный внутри карты

.setIn(['newRequest', 'productionAssets', action.productionId], action.assetId) 

как я могу изменить это так, что мы создаем новый список, если его первый, или если его не первый добавлять?

ответ

0

Я закончил это, это два раунда. Там может быть более емкая версия, но это работает

if (s.hasIn(['newRequest', 'productionAssets', action.productionId])) { 
     return s 
      .updateIn(['newRequest', 'productionAssets', action.productionId], (prodAssets) => prodAssets.push(action.assetId))    
     } else { 
     return s 
      .setIn(['newRequest', 'productionAssets', action.productionId], fromJS([action.assetId]))    
     } 
0

Вы можете сделать одну гильзу так:

return s.updateIn(['newRequest', 'productionAssets', action.productionId], l => (l || List()).push(fromJS(action.assetId))); 

Таким образом, если значение в пути ['newRequest', 'productionAssets', action.productionId] является undefined, вы можете инициализировать его с List(), а затем push() новый элемент прямо. Если список уже существует, вы просто добавляете к нему новый элемент.

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