2016-08-24 44 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 –