我目前正在一个单独的文件中定义我的动作类型:
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'}
}
这是否必要,即随着应用程序的增长,显然这是正确的做法?
答案 0 :(得分:3)
你可以只返回一个字符串而不在单独的文件中定义类型。但是,这通常是错误的编码实践 - 任意字符串,尤其是在多个文件中使用的字符串,应该被定义为常量变量并在任何使用的地方导入。
在您的情况下,您必须在您的操作创建者和一个或多个reducer中使用操作类型字符串(可以设置多个reducer以响应单个操作类型)。将动作类型定义为常量并在任何使用的地方导入它们都可以降低在其中一个使用它们的源中意外拼写错误的风险,这可能会导致大量浪费时间调试简单的错误/拼写错误。
此外,它有利于将所有操作类型定义为常量..允许您和其他团队成员轻松查看可能有多个操作创建者的操作类型。
Redux API文档或多或少地说这取决于你,但是进入一个将动作类型定义为常量的正面列表:http://redux.js.org/docs/recipes/ReducingBoilerplate.html#actions(在Action Creators部分之前)