2016-08-01 226 views
0

我正在玩React和Redux,並遇到了連接問題。React + Redux:狀態undefined

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

在第一個示例中,我收到錯誤消息Cannot get 'text' of undefined,而第二個示例運行沒有問題。這背後的原因是什麼?

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

回答

1

您沒有像第一個例子那樣返回對象,就像您認爲的那樣。您正在使用名爲text的標籤定義函數的主體。

要從箭頭返回對象文字,您需要將其包裝在()中。在JavaScript

(state) => ({})

標籤用於控制執行的流程。這不是一個推薦的模式,但工作原理是這樣:

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

DOCS:

圓括號的身體恢復的對象常量表達式:

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