我正在学习第一个 Flux 教程:https://github.com/facebook/flux/tree/master/examples/flux-todomvc
我对“TodoActionTypes.js”文件的实际用途有点困惑。
如果我的要求有任何不清楚的地方,请告诉我,我会尽力解决问题。
我将尝试用 AppView 的 onToggleTodo 属性来解释:
<AppView /> renders <Main /> which has props.onToggleTodo which is triggered on onChange.
因此,onChange 会触发 TodoActions.toggleTodo。
从TodoActions 中,触发toggleTodo 并将具有类型和id 的操作分派(dispatch)到存储
toggleTodo(id) {
TodoDispatcher.dispatch({
type: TodoActionTypes.TOGGLE_TODO,
id,
});
},
在TodoActionTypes.js中,有:
const ActionTypes = {
...
TOGGLE_TODO: 'TOGGLE_TODO',
};
在TodoStore.js中,有一个
switch (action.type){
case TodoActionTypes.TOGGLE_TODO:
我的问题是为什么有必要有这个,而不仅仅是简单地在各处都设置“TOGGLE_TODO”?
最佳答案
与使用文字字符串相比,此模式提供了许多好处:
- 由于手动输入错误的值而导致的错误更容易跟踪。如果您要使用像 TypeScript 这样的类型检查工具,编译器会清楚地标记这一点。至少您会看到
undefined
代替您的眼睛可能自动认为正确的非常相似的值。 - 在这种情况下,支持重构的编辑器可以这样做。
- 该值可以轻松更改(其值和/或类型)。例如,您可能决定沿着这条路线使用这些值作为位掩码,因此您必须将类型更改为整数。
- 它为其他项目贡献者提供了可能的
TodoActionTypes
的清晰列表。 - 它提供了以编程方式访问和推理可能的
TodoActionTypes
的能力(例如使用for..in
循环)。
关于javascript - Flux 中 ActionType 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186785/