2016-08-01 44 views
0

Ich spiele mit React und Redux herum und stieß auf einige Probleme mit connect.React + Redux: State undefined

const AppConnected = connect((state) => {text: state.text})(App); 

Im ersten Beispiel, erhalte ich die Fehlermeldung Cannot get 'text' of undefined während das zweite Beispiel ohne Probleme läuft. Was ist der Grund dafür?

const AppConnected = connect((state) => { 
    return { 
     text: state.text 
    } 
})(App); 

Antwort

1

Sie geben kein Objekt im ersten Beispiel zurück, wie Sie es wahrscheinlich sind. Sie definieren den Körper einer Funktion mit einem Label namens text.

Um ein Objektliteral von einem Pfeil zurückzugeben, müssen Sie es in () umbrechen.

(state) => ({})

Labels in JavaScript verwendet, um den Ablauf der Ausführung zu steuern. Es ist nicht eine empfohlene Muster, sondern funktioniert wie folgt:

function() { 
text: while(someCondition){ // Label 
    if (someOtherCondition) { 
    continue text; 
    } 
} 
} 
2

DOCS:

parenthesize der Körper ein Objektliteral Ausdruck zurückzukehren:

const AppConnected = connect(state => ({text: state.text}))(App);