【问题标题】: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;
}
但它看起来不那么漂亮