我可以将一个动作作为数组而不是对象文字派遣吗?

时间:2017-06-19 12:09:54

标签: redux

我尝试过一个简单的演示,它似乎有效。但只是为了确保,redux或redux中间件中是否有任何需要操作成为具有'type'属性的对象?我已经阅读了一些教程,强调'类型'属性是必须的。

在:

dispatch({ type: 'DO_SOMETHING', info: 1 });

后:

dispatch(['DO_SOMETHING', 1]);

2 个答案:

答案 0 :(得分:1)

Redux文档明确要求您提供类型属性:

http://redux.js.org/docs/basics/Actions.html

  

操作是纯JavaScript对象。操作必须具有指示正在执行的操作类型的type属性。通常应将类型定义为字符串常量。

此外,Redux似乎在dispatch中引发异常,如果您:

您是否有某些中间件以某种方式转换调度的有效负载?

答案 1 :(得分:1)

@TomW是正确的 - 您无法使用标准Redux存储分派数组。可以编写中间件来查找正在调度的数组并以某种方式拦截它们。但是,实际到达reducers 的任何内容必须是具有type字段的普通对象。

您可能需要阅读我的博文Idiomatic Redux: The Tao of Redux, Part 1 - Implementation and Intent,在那里我将讨论Redux所需的实际技术限制以及存在这些限制的原因。在redux#1813中也有一些相关的讨论,其中有人提交了一个拉取请求,试图添加一次发送多个动作的能力而不实际理解所有部分如何组合在一起。