这个动作创建者在做什么?

时间:2018-12-17 01:53:32

标签: javascript reactjs redux react-redux

我正在阅读this article有关创建react / redux应用程序的信息  并在接下来的部分中感到困惑,尤其是我用红色圈出的部分。这里到底发生了什么?我对所使用的语法不是很熟悉,我以前从未见过双“ =>”。如果您能够解释此代码块,将不胜感激!

谢谢

enter image description here

3 个答案:

答案 0 :(得分:2)

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

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

箭头功能=>是最新的JavaScript(称为ES6)引入的新语法。 You can read about it here。箭头函数使您可以使用较短的语法来定义函数,并且还可以解决范围问题。

最后一行将在您的react组件内使用以调用操作。即

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

我花了一些时间来了解redux,如果您还没有看过Dan Abramov's tutorials,那么我强烈推荐他们。他是redux的创造者。另外,开始构建自己的redux应用程序,这是学习的最佳方法。

答案 1 :(得分:2)

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

在本特定示例中,这称为currying是一种转换接受多个参数的函数的求值的技术 类型,(有效载荷,元)。在这里,该函数接受第一个参数(类型),并返回一个接受第二个参数(有效载荷,元)的函数,依此类推。

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

sum(2)(1); //返回3

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

Currying是将具有多个参数的函数转换为只有一个参数的函数序列的过程-偏向于部分应用

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

答案 2 :(得分:0)

首先,您调用createAction并传递类型(SET_USER_ID),然后调用setUserId并传递有效负载(在这种情况下为id)。 “ Meta”是可选参数。 起初很难把头缠起来。 您也可以这样写

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

但是看起来并不漂亮