2016-06-08 12 views
8

üzerinde geçersiz anahtar yolu Docs aşağıdaki kodun düzgün çalışıp çalışmadığını, çünkü geçersiz bir anahtar yolu hatası alıyorum ... this codepen. Anahtar 'selector' olmayan bir Harita değeri vardır çünküNeden Immutable.js atmak Map.setIn()

var map1 = Immutable.Map({ 'selector': { 'type': 'bar' }}); 
var map2 = map1.setIn(['selector', 'type'], 'foo'); 
console.log(map2.toJS()); 

cevap

13

bu gerçekleşir. Biz 'selector' için değeri de bir Immutable Harita olduğundan emin olmak eğer setIn çalışacaktır:

var map1 = Immutable.Map({ 'selector': Immutable.Map({ 'type': 'bar' })}); 
 
var map2 = map1.setIn(['selector', 'type'], 'foo'); 
 
console.log(map1.toJS()); 
 
console.log(map2.toJS());
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>

derinden Maps ve fromJS() kullanabilirsiniz Listelerine JavaScript nesneleri ve diziler dönüştürmek için. Böylece daha kolay yazabilirsiniz:

var map3 = Immutable.fromJS({ 'selector': { 'type': 'bar' }}); 
 
var map4 = map3.setIn(['selector', 'type'], 'foo'); 
 
console.log(map3.toJS()); 
 
console.log(map4.toJS());
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>

+0

yüzden ben yinelemeli elle yuvalama her seviyede haritasına zorunda değişiklik yapmak isteyen bir derin iç içe nesne varsa? Bu biraz, iyi, hantal tbh gibi görünüyor. – hally9k

+0

Bu illüstrasyon içindi. JavaScript Objects ve Arrays'i Haritalar ve Listeler'e dönüştürmek için ['fromJS()'] (https://facebook.github.io/immutable-js/docs/#/fromJS) kullanabilirsiniz. – 1983