2016-10-14 9 views
2

私はreduxには新しく、redux-actionsを見たり、減速機のswitch文を使ったりしましたが、switch文を使用しているわけではありませんが、アクションメソッドを呼び出すだけでは簡単ではありませんか?ここでRedux - スイッチの代わりに減速器のアクションオブジェクトメソッドを使用

は、私はちょうど私の最初の減速と行動でこれをテストしてみた、そしてそれは動作しますが、スイッチタイプがあるなぜ私は思ったんだけど、かなり明白なようで、私は

import actions from './actions' 

const reducer = (state = {}, action) => { 
    if (actions[action.type]) return Object.assign({}, 
     state, actions[action.type](action) 
    ); 
    return state; 
} 

を考えてんですよ選択された方法?

+0

1.あなたの行動は、既存の状態オブジェクトを引数として取るべきですか? 2.スイッチケースは単なる文体的な決定である。あなたの減速機能が新しい状態オブジェクトを返す限り何でもすることができます。どのような感じがいいですか:あなたにはきれいに感じます。 – iamnat

答えて

1

いくつかの所見:

  1. は、 "アクション" として、これらの外部関数を参照しないでください。彼らは行動ではありません。彼らは実際に減速機そのものです。
  2. レデューサーであるので、あなたは本当に状態オブジェクトをそれらに渡すべきです。多くの場合、現在の状態に含まれている情報と、アクションオブジェクトに含まれている情報を利用することが必要です。

そうしないと、これは適切なアプローチのようです。

+1

'switch'と関数を使ったオブジェクト(ハッシュ)の違いは無視できます。しかし、 'Object.assign'は状態の形状をオブジェクトにロックし、削除を許可しません。これは一般的な解決策ではありません。 – DDS

+1

それは本当です。しかし、私はいつも状態の形状を常にとどめています。レデューサーが状態の形状を任意に変更していた場合、私のアプリケーションの残りの部分では問題になります。 –

+0

時には配列がオブジェクトよりも妥当であることがあります。 – DDS

2

スイッチステートメントは確かに最も一般的なアプローチですが、ルックアップテーブルも一般的です。必要に応じて、単純なif/then条件を使用することもできます。最終的には、どのように減速機を書くかはあなた次第です。

FYIについては、このトピックはRedux FAQFAQ: Reducersセクションに記載されています。新しい"Structuring Reducers"ハウツーセクションもお読みください。

関連する問題