Ecmascript 6 Redux/ES6-用于未按预期在connect函数中工作的对象文字速记语法
当试图分派一个动作时,它失败了,直到我重新排列了es6代码,在语法上看起来是一样的 我很可能不了解es6对象文字速记,或者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); 例
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})
没有什么意义。接受一个动作。我编辑了答案以包含更多细节。我花了一分钟时间把所有内容都写下来。