2016-11-30 4 views
0

レビュックスアクションが整形式であると主張するベストプラクティス/推奨の方法はありますか?私はかなりノービッシュのJavaScriptプログラマ(20年以上のC++/Java/C#から来ている)であり、強いタイピングの欠如によって捨て去られています。Redux.js:不正な操作をキャッチしていますか?

具体的に、私はアドレスにしようとしているユースケースがある:

が反応+ Reduxの "ToDoリスト" アプリ(http://redux.js.org/docs/basics/ExampleTodoList.html

2.usingアクションの作成者を1.using:

​​

3.レデューサーコードスニペット:

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

インデックスidが一致しません。しかし、彼らは持っている必要があります - それはバグでした。診断には30分かかりましたが、私は大きなアプリでしか想像できません。

+1

redux-action-validatorの基本クラスを使ってGitHubリポジトリを作成しました。 READMEに実装に関する詳細があります:https://github.com/michael-martin-al/redux-action-validator –

+0

これはかなりクールです! – Malachi

答えて

1

を使用すると、アクションの種類を表し、クラスを作成し、それが検証を処理せ、そのような...

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 
    } 

ことのすべてが動作する場合ActionTypeを生成するActionFactoryを作成することができます。

EDIT:私はそれをインストールして使用する方法を説明するREADMEにredux-action-validatorと呼ばれるnpm moduleを作成しました。

関連する問題