Ecmascript 6 Redux/ES6-用于未按预期在connect函数中工作的对象文字速记语法

Ecmascript 6 Redux/ES6-用于未按预期在connect函数中工作的对象文字速记语法,ecmascript-6,redux,react-redux,Ecmascript 6,Redux,React Redux,当试图分派一个动作时,它失败了,直到我重新排列了es6代码,在语法上看起来是一样的 我很可能不了解es6对象文字速记,或者connect函数在引擎盖下的功能。 例1-不工作 myAction未正确解释为返回键和值名称匹配的对象文字的缩写 var mapDispatchToProps = () => ({myAction}); MyComponent = connect( mapStateToProps, mapDispatchToProps )(MyComponent); 例

当试图分派一个动作时,它失败了,直到我重新排列了es6代码,在语法上看起来是一样的

我很可能不了解es6对象文字速记,或者
connect
函数在引擎盖下的功能。

例1-不工作

myAction
未正确解释为返回键和值名称匹配的对象文字的缩写

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

MyComponent = connect(
  mapStateToProps,
  mapDispatchToProps 
)(MyComponent);
例2-工作

一旦我将
myAction
的速记语法直接添加到
connect
函数中,它就可以正常工作了

MyComponent = connect(
  mapStateToProps,
  {myObject}
)(MyComponent);
问题:

第一种情况下,我希望函数返回与第二种情况相同的对象文字。为什么不是这样呢

随答案更新:

下面的答案是正确的-如果你想看一段视频来解释它,请点击此处

const mapDispatchToProps = (dispatch) => (return {someCallBack: () => dispatch({myAction})});
第一个示例似乎缺少
dispatch
参数和调用。检查示例。然后,您可以在传递给connect()的组件中使用
someCallBack

从文档中:

如果函数被传递,它将被分派。这取决于您返回一个对象,该对象以某种方式使用dispatch以您自己的方式绑定动作创建者

尝试以下方法:

const mapDispatchToProps = (dispatch) => (return {someCallBack: () => dispatch({myAction})});
第一个示例似乎缺少
dispatch
参数和调用。检查示例。然后,您可以在传递给connect()的组件中使用
someCallBack

从文档中:

如果函数被传递,它将被分派。这取决于您返回一个对象,该对象以某种方式使用dispatch以您自己的方式绑定动作创建者


“为什么不是这样?”---因为返回对象的函数与对象本身不同。它实际上取决于处理它的函数,而mapDispatchToProps在Dan Abramov的许多示例中都是交给connect方法的函数。它确实是(),连接方法可以松散地处理函数和对象。在阅读和分解我正在学习的其他新语法时,这很好,但很棘手。从文档中可以看出:“如果传递了一个函数,它将被赋予
dispatch
。由您返回一个对象,该对象以某种方式使用
dispatch
以您自己的方式绑定动作创建者。(提示:您可以使用Redux提供的bindActionCreators()助手。)“为什么不是这样呢?”---因为返回对象的函数与对象本身不同。它实际上取决于处理它的函数,而mapDispatchToProps在Dan Abramov的许多示例中是一个交给connect方法的函数。它确实是(),它可以正常工作。哦,connect方法松散地处理函数和对象。在阅读和分解我正在学习的其他新语法时,这很好,但很棘手。从文档中可以看出:“如果传递了一个函数,它将被赋予
调度
。由您返回一个对象,该对象以某种方式使用
dispatch
以您自己的方式绑定动作创建者。(提示:您可以使用Redux的bindActionCreators()助手。)“我认为
dispatch({myAction})
没有什么意义。接受一个操作。我编辑了答案以包含更多细节。我花了一分钟的时间编写了所有内容。我相信
dispatch({myAction})
没有什么意义。接受一个动作。我编辑了答案以包含更多细节。我花了一分钟时间把所有内容都写下来。