2016-08-12 2 views
0

ich folgendes Objekt habe:Immutable SetIn verschachteltes Objekt Rückkehr ungültig keyPath Fehler

const initialState = Map({ 
    posts: { 
    most_popular: [], 
    trending: [], 
    latest: [], 
    } 
}); 

Und ich versuche, ein Sub-Objekt innerhalb Einträge zu aktualisieren. Hier ist, was ich versucht habe:

intialState.setIn(["posts", "most_popular"], ["array", "of", "values"]); 

Das Ausführen dieses Befehls set zurück

Uncaught Error: Invalid keyPath() 

Bin ich etwas fehlt? Ich muss keine Unterkarten erstellen, oder? Z. B

const initialState = Map({ 
     posts: Map({ 
     most_popular: [], 

Offensichtlich das nicht funktioniert (Ich habe versucht), aber vielleicht gibt es eine andere Art und Weise Unter Objekt auf der Einstellung?

EDIT:

Erste das Objekt und die Aktualisierung wie so funktioniert:

state.get("entries").most_popular = ["k"]; 

Das bedeutet aber meine entries.most_popular (Trending, spätestens) sind nicht unveränderlich? Gibt es eine Möglichkeit, Unterobjekte unveränderbar zu machen?

Antwort

1

Verwenden Sie statt Map()fromJS(). Wenn Sie Map() verwenden, ist das Array unter Ihrem Schlüssel most_popular ein Standard-JS-Objekt und keine Immutable.js-Struktur.

So:

const initialState = fromJS({ 
    posts: { 
    most_popular: [], 
    trending: [], 
    latest: [], 
    } 
}); 

Jetzt ist alles ein unveränderliches Objekt. Dann können Sie leicht tun:

initialState.setIn(["posts", "most_popular"], ["array", "of", "values"]); 
Verwandte Themen