我目前在一个单独的文件中定义我的操作类型:
export const SET_SOME_ID = 'SET_SOME_ID'; export const SET_SOME_NAME = 'SET_SOME_NAME'; ...
然后在我的动作创建者文件中,我这样做:
import * as ATYPES from './actionTypes.js'; export function setSomeId(id) { return { type: ATYPES.SET_SOME_ID} } export function setSomeName(name) { return { type: ATYPES.SET_SOME_NAME} } ...
我觉得我应该省去将动作类型放在单独的文件中,而只需在actionCreators.js文件中执行此操作:
export function setSomeId(id) { return { type: 'SET_SOME_ID'} }
这是否必要,即随着应用程序的增长,显然这是正确的做法吗?
你可以只返回一个字符串,没有一个单独的文件中定义的类型。但是,这通常是不好的编码习惯-任意字符串,尤其是跨多个文件使用的字符串,应定义为常量变量,并在使用时导入。
在您的情况下,您必须在动作创建者内部以及一个或多个化简器中使用动作类型字符串(可以将多个化简器设置为响应单个动作类型)。将动作类型定义为常量,然后将其导入到任何地方,可以减少在使用它们的源之一中意外拼写错误的风险,这可能会浪费大量时间调试简单的错误/拼写错误。
同样,将所有动作类型都定义为常量的好处是。您和其他团队成员可以轻松查看可能的多个动作创建者的动作类型。
Redux API文档或多或少都说这取决于您,但是可以将肯定的操作列表定义为常量:http : //redux.js.org/docs/recipes/ReducingBoilerplate.html#actions(在之前动作创建者部分)