javascript - Flux 中 ActionType 有什么用?

标签 javascript flux

我正在学习第一个 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/

相关文章:

javascript - 祖 parent 组件不将参数传递给函数

redux - 在 Vuex 中不使用操作就提交突变是不是很糟糕?

reactjs - Redux 是单向的吗?

javascript - React Flux - 无法在调度中间调度

javascript - 用过去时命名 Flux Action 是一种好习惯吗?

javascript - "this"单击时更改值

javascript - 即使有中断,Switch 语句也会直接转到默认值

javascript - 如何在 Jest 测试中模拟影子元素

javascript - DOM:判断anchorNode或focusNode是否在左侧

vue.js - 将 vuex store 的一部分作为 action 的负载分派(dispatch)是否正确?