2016-08-24 38 views
0

雖然試圖派遣行動myAction有人失敗,直到我重新安排在語法似乎是相同的ES6代碼連接功能無法正常工作。終極版/ ES6 - 對象字面縮寫語法如預期

這很可能是我沒有得到關於es6對象字面速記的東西,或者是什麼connect函數在引擎蓋下做的事情。

例1 - 不工作

myAction沒有被正確地解釋爲速記對象文本,其中關鍵和值名稱匹配的回報。

var mapDispatchToProps =() => ({myAction}); 

MyComponent = connect(
    mapStateToProps, 
    mapDispatchToProps 
)(MyComponent); 

例2 - 工作

一旦我添加了myAction語法速記到在connect功能直接它的工作如預期。

MyComponent = connect(
    mapStateToProps, 
    {myObject} 
)(MyComponent); 

問題:

我預期函數返回對象文本等同於第二的第一種情況。爲什麼不是這樣。

更新陪答:

下面的答案是正確的 - 如果你想看到一個視頻解釋它去這裏https://egghead.io/lessons/javascript-redux-using-mapdispatchtoprops-shorthand-notation

+1

「爲什麼不是這樣。」 ---因爲返回對象的函數與對象本身不一樣。 – zerkms

+0

這真的取決於功能處理它和mapDispatchToProps是交給連接方法在許多人丹·阿布拉莫夫的例子功能 –

+0

這的確是(https://github.com/reactjs/react-redux/blob/master/docs /api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options),它的工作原理沒有問題。 – zerkms

回答

3

試着這麼做:

const mapDispatchToProps = (dispatch) => (return {someCallBack:() => dispatch({myAction})}); 

它看起來像第一個例子是缺少dispatch參數和調用。檢出TodoList示例。然後,您可以在傳遞給connect()的組件中使用someCallBack

connect()文檔:

如果一個函數獲得通過,將給予調度。這取決於你返回一個以某種方式使用dispatch以自己的方式綁定動作創建者的對象。

+1

我相信'dispatch({myAction})'沒什麼意義。 – zerkms

+0

[調度](http://redux.js.org/docs/api/Store.html#dispatch)接受的動作。我編輯了包含更多細節的答案。我花了一分鐘把一切寫下來。 –

+0

thx @ShawnMoore和zerkms –