2016-10-30 7 views
0

だから、新しいリストとリストを交換する方法を、私はデフォルトの不変のリストがあります:Immutable.jsはと

var someObject = Immutable.Map({ 
    myList: Immutable.List([4,5,6,7]) 
}) 

は今、私は人が、このリストを上書きすることができますが、私はまだそれが内に含まれる必要があります"someObject"基本的に、ユーザーが配列を提供する場合、myList内のものをこの「新しいリスト」に置き換えます。私はそのように、幸運を達成しようとしました。

基本的に、このnewListが存在する場合はそれを使用します。そうでない場合は、myListを自分自身にリセットするか無視します。

//example 
var newList = [44444,99999] 

       someObject.get('myList') 
        .clear() 
         .set('myList', newList || someObject.get('myList')) 

答えて

0

immutable.jsで提供されるオブジェクトは不変であるため、これは不可能です。これがそのポイントです。

代わりのSomeObjectのを変異しようとしている、あなたが何をしようとして達成する一つの方法は、defaultList = Immutable.List(4, 5, 6, 7)を定義し、ユーザーが入力自分のリストを持っている後someObjectを構築することです。

if (userList) { 
    someObject = Immutable.Map({myList: Immutable.List(userList)}) 
} else { 
    someObject = Immutable.Map({myList: Immutable.List(defaultList)}) 
} 
+0

私は、あなたが言っていることを見ていますが、これはスケーラブルではありません。myListに対してテストしてはいけません。存在しない場合は、defaultListを使用してください。私はあなたがどのように "新しいデータ"でヘルパーで不変オブジェクトを "設定"できないのか分かりません。私はオブジェクト/地図 - 更新と削除を行っています。この ".List"でやりたいことはすべてクリアして、ユーザーデータでそれを再水和します。 –

関連する問題