传递给调度函数的参数必须是 reactjs 中包含“type”属性的对象

Must parameter passing into dispatch function be Object which containt 'type' property in reactjs

提问人:LeoPkm2-1 提问时间:6/29/2023 更新时间:6/29/2023 访问量:53

问:

我正在学习 Reactjs 中的 useReducer。在关于 useReducer Hook 的教学视频或文档中,传递给调度函数的参数始终是一个常规的 JavaScript 对象(其中包含类型属性和其他有助于在 reducer 函数中设置新状态的信息)。

我有一个问题,在 reactjs 中将对象作为参数传递给调度函数是 Reactjs 的规则,或者它是 reactjs 开发通信的编码约定。此外,与其将对象作为参数传递给调度函数,我是否可以将任何数据类型作为我想要调度函数传递?

javascript reactjs react-hooks 参数 传递

评论


答:

1赞 Lin Du 6/29/2023 #1

Extracting State Logic into a Reducer 文档中:

动作对象可以具有任何形状。

按照惯例,通常会给它一个字符串来描述所发生的情况,并在其他字段中传递任何其他信息。type

这是一种惯例,既不是限制性的,也不是强制性的。

以下是一些最佳做法:

请参阅此测试用例:double invokes reducer functions

你会发现,这个测试用例调度了一个基元数。dispatch(1)

看一下源码,这里会传递到reducer函数。action

反应 v16.14.0

// ...
const currentState: S = (queue.lastRenderedState: any);
const eagerState = lastRenderedReducer(currentState, action);
// ...

评论

0赞 LeoPkm2-1 6/29/2023
我可以传递数组而不是将对象传递给调度吗?
0赞 Lin Du 6/29/2023
@LeoPkm2-1 如果你愿意,你可以