2016-11-30 25 views
0

是否有一个最佳实践/推荐的方式来断言redux行为是否良构?我是一个相当不喜欢的JavaScript程序员(从20年的C++/Java/C#开始),并且由于缺乏强大的输入而被抛弃。Redux.js:捕获格式错误的操作?

具体我试图地址的使用情况是:

1.使用阵营+终极版 “待办事项” 应用程序(http://redux.js.org/docs/basics/ExampleTodoList.html

2.使用行动的创建者:

​​

3.with reducer code snippet:

case TOGGLE_TODO: 
    if (state.id !== action.id) { 
    return state 
    } 

请注意,索引id不匹配。但是,他们应该有 - 这是一个错误。这花了我30分钟来诊断,我只能想象更大的应用程序。

+1

我创建了一个GitHub库,它有一个redux-action-validator基类。 README有关于实现的更多信息:https://github.com/michael-martin-al/redux-action-validator –

+0

这很酷! – Malachi

回答

1

你有没有考虑创建表示动作类型的Class,然后让它处理验证,像这样......

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 }; 
    } 
} 

然后你可以在行动的创建者使用这样的.. 。

export function toggleTodo(index) { 
    return new ToggleAction({ id: index }).toObject(); 
} 

而且这样的减速...

case TOGGLE_TODO: 
    const toggleAction = new ToggleAction(action) 
    if (state.id !== toggleAction.id) { 
    return state 
    } 

如果所有的作品你可以创建一个ActionFactory来生成ActionType类。

编辑:我创建了一个npm module调用redux-action-validator与README描述如何安装和使用它。