【问题标题】:What is this action creator doing?这个动作创建者在做什么?
【发布时间】:2018-12-17 01:53:32
【问题描述】:

我正在阅读 this article 关于创建 react/redux 应用程序的内容 并且对以下部分感到有些困惑,特别是我用红色圈出的部分。这里到底发生了什么?我对使用的语法不是很熟悉,双“=>”不是我以前见过的。如果您能够解释这段代码,将不胜感激!

谢谢

【问题讨论】:

标签: javascript reactjs redux react-redux


【解决方案1】:

不确定您对 Redux 了解多少,但您为要在商店中记录的每个任务创建操作,这些操作是使用 reducer 处理的。

createAction 函数,顾名思义,创建动作,因此您不必一遍又一遍地重写相同的代码,只需传递您要创建的动作的名称即可调用它。在此示例中,正在创建的操作称为 SET_USER_ID

箭头函数=> 是最新的JavaScript 引入的新语法,即ES6。 You can read about it here。箭头函数允许您使用更短的语法定义函数,它们还解决了范围问题。

最后一行将在您的反应组件中用于调用操作。即

<Button onClick={ () => dispatch(setUserId('abcd123')) } />

我花了一段时间才了解 redux,如果你还没有看过 Dan Abramov's tutorials ,那么我强烈推荐它们。他是redux的创造者。同时开始构建自己的 redux 应用,这是最好的学习方式。

【讨论】:

    【解决方案2】:

    “双“=>”不是我以前见过的。”

    这被称为 currying 是一种翻译接受多个参数的函数的求值的技术,在这个特定的例子中 类型,(有效负载,元)。在这里,函数接受第一个参数(type)并返回一个接受第二个参数(payload, meta)的函数,依此类推。

    示例:const sum = x => y => x + y;

    总和 (2)(1); // 返回 3

    总和 (2); // 返回一个函数 y => 2 + y

    Currying 是将一个具有多个参数的函数转换为一系列函数的过程,每个函数只有一个参数——Partial Application 的花哨名称

    https://en.wikipedia.org/wiki/Partial_application

    【讨论】:

    • 对柯里化的很好解释:)
    【解决方案3】:

    首先调用 createAction 并传递一个类型(SET_USER_ID),然后调用 setUserId 并传递一个有效负载(在本例中为 id)。 'Meta' 是可选参数。 一开始很难绕开它。 也可以这样写

    const newOPfunction = (type) => {
    const newFunc = (id) => {
       return {type, id}
    }
    return newFunc;
    }
    

    但它看起来不那么漂亮

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多