2015-07-27 13 views

cevap

33
aşağıdaki şekilde yapabilirsiniz

: myMap değişmez olduğu

const myMap = Immutable.fromJS({ 
    nested: { 
    someKey: ['hello', 'world'], 
    }, 
}); 

const myNewMap = myMap.updateIn(['nested', 'someKey'], arr => arr.push('bye')); 

console.log(myNewMap.toJS()); 
// { 
// nested: { 
// someKey: ["hello", "world", "bye"] 
// } 
// } 

(bu JSBin bakınız), ayarlamak istediğiniz her seferinde/güncellemek/bazılarını silin içindeki veriler, yeni verilere bir referans döndürecektir. Yani, onu erişmek için bir değişkene ayarlamanız gerekir (bu durumda, myNewMap).

+0

Bu arr.push 'un aslında güncellenmiş bir diziyi değil, yeni bir boyutunu döndüreceğini de unutmayın. – kboom

7

beklendiği gibi böylece kod çalışacaktır (yani - myMap, newData'nın içeri sokulmasıyla 'key' de bir mutable/mutasyona uğramış dizi içerecektir. Ancak, bu tür bir değişiklik immutabilitenin amacını yitirir, bu yüzden myMap'teki anahtarın bir Immutable.List öğesinde olmasını tavsiye ederim. Bu durumda yapmanız istersiniz:

var newMap = myMap.set('key', myMap.get('key').push(newData))