2016-12-08 3 views
0

Ich möchte alle Suchanfragen vom Benutzer als Schlüssel von Objekten (Suchfeld) speichern:Immutable.js fügen Sie neue Daten

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

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

Neue Daten:

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

const expectedResult = state 

Suche muss sein unveränderlich, wie es sich ändern kann. key1, key2 ... muss nicht, denn sobald sie initialisiert sind, ändert sich nichts.

Zwei Fragen:

Ich glaube, ich fromJS Funktion in SearchKey benötigen, um eine Karte zu bekommen, ich meine, fromJS Funktion nicht verschachtelt Karten

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

Aber als Array innerhalb Tasten 1, 2, kann nicht mutieren, ein anderer von JS wäre nicht nötig. Ist es so?

Wie kann ich key1, key2 .. Werte in Suchfeld einfügen?

Antwort

0

Mit mergeDeep scheint in Ordnung zu sein:

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()); 
Verwandte Themen