首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux.js:捕捉畸形动作?

Redux.js:捕捉畸形动作?
EN

Stack Overflow用户
提问于 2016-11-30 07:03:15
回答 1查看 63关注 0票数 0

是否有最佳实践/推荐的方法来断言redux操作的格式良好?我是一个相当幼稚的JavaScript程序员(来自于20年的C++/Java/C#),但由于缺乏强大的打字能力而被抛诸脑后。

具体来说,我试图解决的用例是:

1.使用React + Redux "ToDo“应用程序(http://redux.js.org/docs/basics/ExampleTodoList.html)

2.使用行动创建者:

代码语言:javascript
复制
export function toggleTodo(index) {
  return { type: TOGGLE_TODO, index }
}

3.使用还原器代码片段:

代码语言:javascript
复制
case TOGGLE_TODO:
  if (state.id !== action.id) {
    return state
  }

注意,索引id不匹配。不过,他们应该这么做的--那是个虫子。这花了我30分钟来诊断,我只能想象更大的应用程序。

EN

回答 1

Stack Overflow用户

发布于 2016-11-30 07:26:17

您是否考虑过创建一个表示Action类型的类,然后让它处理验证,如下所示.

代码语言:javascript
复制
class ToggleAction {
   constructor(o) {
     if (
       typeof o === 'object' &&
       typeof o.type === 'string' &&
       typeof o.id === 'number'
     ) {
       this.type = "TOGGLE_TODO"; 
       this.id = o.id
     } else {
       throw new Error('Invalid ToggleAction');
     }
   }

   toObject() {
     return { type: this.type, id: this.id };
   }
}

然后你就可以把它用在动作创作者身上.

代码语言:javascript
复制
export function toggleTodo(index) {
  return new ToggleAction({ id: index }).toObject();
}

在减速机里这样..。

代码语言:javascript
复制
case TOGGLE_TODO:
  const toggleAction = new ToggleAction(action)
  if (state.id !== toggleAction.id) {
    return state
  }

如果所有这些都成功的话,您可以创建一个生成ActionFactory类的ActionType。

编辑:我创建了一个名为redux-action-validatornpm模块,自述了如何安装和使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40882204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档