提问人:LeoPkm2-1 提问时间:6/29/2023 更新时间:6/29/2023 访问量:53
传递给调度函数的参数必须是 reactjs 中包含“type”属性的对象
Must parameter passing into dispatch function be Object which containt 'type' property in reactjs
问:
我正在学习 Reactjs 中的 useReducer。在关于 useReducer Hook 的教学视频或文档中,传递给调度函数的参数始终是一个常规的 JavaScript 对象(其中包含类型属性和其他有助于在 reducer 函数中设置新状态的信息)。
我有一个问题,在 reactjs 中将对象作为参数传递给调度函数是 Reactjs 的规则,或者它是 reactjs 开发通信的编码约定。此外,与其将对象作为参数传递给调度函数,我是否可以将任何数据类型作为我想要调度函数传递?
答:
1赞
Lin Du
6/29/2023
#1
从 Extracting State Logic into a Reducer 文档中:
动作对象可以具有任何形状。
按照惯例,通常会给它一个字符串来描述所发生的情况,并在其他字段中传递任何其他信息。
type
这是一种惯例,既不是限制性的,也不是强制性的。
以下是一些最佳做法:
- 助焊剂标准动作
- 不要将不可序列化的值放在状态或操作中
- 使用 Flux 标准操作约定编写操作。为了保持一致性,最好使用 FSA 格式的操作。
请参阅此测试用例: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 如果你愿意,你可以
评论