我是 JavaScript 新手,我正在使用以下内容学习 React tutorial .
它还教授如何使用 Alt 作为状态管理库,我的问题与 connect
方法语法相关。我没有详细解释这个问题,因为我相信我的问题仅与理解语法有关。
我知道这里 connect 将逗号分隔的参数作为 props 传递给组件应用程序。然而我不明白第一个参数。
我遇到的箭头函数都在 =>
之后使用 {}
,例如 () => {}
,其中参数将位于 ()
中,函数主体将位于 {}
我对({lanes}) => ({lanes})
的理解是,这是一个函数,它接受名为 Lanes 的对象数组并返回相同的数组。代码片段如下如下:
export default connect(({lanes}) => ({lanes}), {
LaneActions
})(App)
我的问题是:
- 第一个参数确实是一个函数,我说得对吗?
- channel 是否包含在
{}
中以指定它是一个数组?如果不是,代表什么? - 如果1.是正确的,为什么要传递一个按原样传递参数的函数。为什么不将 connect 写为
connect(lanes,LaneActions)(App)
或connect({lanes},LaneActions)(App)
将车道封闭在{}
中会产生影响吗?它是什么? - 如果1.错误,请解释第一个参数的含义。
最佳答案
- 是的,这确实是一个箭头函数。
- 不,这不是 JS 中的“数组”(尽管如果您使用过 PHP,您可能会错误地这样调用它,因为 PHP 社区经常使用“(关联)数组”来表示这个概念)。用 JS 术语来说,这是一个“对象”,即一个键值数据结构(而在 JS 中,数组是按数字索引的)。具体来说,左侧是一个名为“解构参数”的新功能,它接受一个对象并将特定键提取到局部变量中。右侧有一个对象文字,根据本地数据创建一个新对象(注意,该值被省略,这是最近 JS 中可能出现的技巧)。
- 可能是因为
connect
需要一个回调作为第一个参数,如果您传递一个非函数,就会中断。另外,请注意,这不是普通的直通;它会在返回第一个参数之前删除除lanes
之外的所有键。 - 由于 (1) 是正确的,因此此处不需要答案。
5 和 6:这些有点宽泛。我建议提出一个新问题或检查 MDN's page on arrow functions如果你想了解所有需要知道的事情。为了回答这种特定情况:参数上的 ()
是必需的,因为参数比单个标识符更复杂,参数中的 {}
用于解构,主体上的 ()
是为了区分对象字面量和仅由单个语句 lanes
组成的 block ,而 {}
中主体创建一个对象文字。
如果您想知道(有些密集编码的)箭头函数到底是做什么的,顺便说一句,它的作用与以下大致相同(给出或采取一些当前不相关的箭头函数的怪癖):
function(obj) {
return { lanes: obj.lanes };
}
关于javascript - 当箭头函数只是返回它所采用的值时,为什么它会作为参数发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47287588/