2016-08-01 3 views
0

ユーザーが複数のアセットを選択できるようにアセットを選択するシステムを変更する必要があります。現在、我々はこのような生産IDマップに1つの資産IDを追加します。不変js - マップ内にネストされたリストを作成または更新する

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

我々はその最初の場合は、新しいリストを作成し、またはその最初のない場合は追加ように、どのように私はこれを修正することができますか?

答えて

0

私はこれをやって2ラウンドです。多分より簡潔バージョンは、これは

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

あなたはこのようなワンライナーを行うことができますがあり動作します:パス['newRequest', 'productionAssets', action.productionId]の値がundefinedある場合

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

この方法で、あなたはそれを初期化することができますList()と入力してpush()新しい項目を右に入力します。リストが既に存在する場合は、新しい項目を追加するだけです。

関連する問題