代码之家  ›  专栏  ›  技术社区  ›  laksmi iragavarapu

为什么arrow函数只返回其原样的值时作为参数发送?

  •  0
  • laksmi iragavarapu  · 技术社区  · 7 年前

    我是JavaScript新手,我正在学习使用以下代码进行反应 tutorial .

    它还教授将Alt用作州管理库,我的问题与 connect 方法语法。我并没有详细解释这个问题,因为我相信我的问题只与理解语法有关。

    我知道这里connect将逗号分隔的参数作为道具传递给组件应用程序。然而,我不理解第一个参数。

    我遇到的所有箭头函数 {} 之后 => 例如 () => {} ,其中参数将位于 () 函数体将位于 {}

    我对 ({lanes}) => ({lanes}) 这是一个函数,它接受一个名为lanes的对象数组,并返回相同的数组。代码段如下:

    export default connect(({lanes}) => ({lanes}), {
        LaneActions
    })(App)
    

    我的问题是:

    1. 第一个参数确实是一个函数,我说得对吗?
    2. 车道是否封闭在 {} 指定它是一个数组?如果没有,它代表什么?
    3. 如果1。是的,为什么传递一个按原样传递参数的函数呢。为什么不将连接写为 connect(lanes,LaneActions)(App) connect({lanes},LaneActions)(App)
      将封闭车道 {} 有什么不同?
    4. 如果1。错误,请解释第一个参数的含义。
    1 回复  |  直到 7 年前
        1
  •  3
  •   Soron    7 年前
    1. 是的,这确实是一个箭头函数。
    2. 不,那是 JS中的“数组”(尽管如果您使用过PHP,您可能会错误地将其称为数组,因为PHP社区经常使用“(关联)数组”来表示这个概念)。这是一个“ 对象 关键值 数据结构(而在JS中,数组是数字索引的)。具体来说,左侧是一个新功能,称为“ “,它获取一个对象并将特定键提取到局部变量中。在右侧,有一个 对象文字 ,基于本地数据创建一个新对象(请注意,忽略了该值,这在最近的JS中可能是一个技巧)。
    3. 大概是因为 connect 需要一个 回调 作为第一个参数,如果传递非函数,则会中断。此外,请注意,这不是简单的传递;除了 lanes 从第一个参数开始,然后返回。
    4. 由于(1)是正确的,这里不需要回答。

    5&6: 这些有点宽泛。我建议你问一个新问题或检查一下 MDN's page on arrow functions 如果你想知道一切。要回答这个特定的案例: () 由于参数比单个标识符更复杂,因此需要使用参数 {} 在用于分解的参数中 () 正文是区分对象文字和仅由单个语句组成的块 车道 ,以及 {} 在主体中创建对象文字。

    顺便说一句,如果您想知道(代码有点密集)箭头函数到底做了什么,它的作用大致与以下相同(给出或接受一些目前不相关的箭头函数的怪癖):

    function(obj) {
        return { lanes: obj.lanes };
    }