2016-12-08 37 views
0

我想一切從用戶的搜索保存爲對象的鍵(搜索字段):Immutable.js添加新的數據

beforeState = fromJS({ 
     showFilter: false, 
     loading: false, 
     error: false, 
     search: fromJS({}) 
    }) 

    afterState = fromJS({ 
     showFilter: false, 
     loading: false, 
     error: false, 
     search: 
     key1: [{}, {},...], 
     key2: [{}, {}, {}...] 
}) 

新的數據:

const searchText = 'test' 
const data = [{object1}, {object2},....] 

const expectedResult = state 

搜索必須是不變的,因爲它可以改變。 key1,key2 ...不需要,因爲一旦它們被初始化,它們不會改變。

兩個問題:

我想我需要爲了在searchKey fromJS函數來獲得地圖,我的意思是,fromJS功能不窩映射

var t = beforeState.get('search').constructor.name; 
console.log(t) //gets Map but without fromJS gets Object 

但作爲內部鍵1陣列,KEY2,不能變異,另一個來自JS不需要。是這樣嗎?

如何在搜索字段中插入key1,key2 ..值?

回答

0

使用mergeDeep,似乎是確定:

var boxes = Immutable.fromJS({ 
    box1: { 
    id:1 
    }, 
    box2: { 
    id:2 
    }, 
    search: Immutable.fromJS({box3: {z:7}}) 
}); 

var data = Immutable.fromJS({ 
    search: { 
     box3: {id:3} 
    } 
}); 


var newBoxes = boxes.mergeDeep(data); 
console.log(newBoxes.get('search').toJS());