2017-07-07 1 views
1

私は自分のプロジェクトでリアクトライクなアプローチを使用しています。私の問題は私のレデューサーがかなり「フラット」ですが、彼らは異なるステートツリーエリアで多くのアップデートを処理する必要があるため、より複雑になります。リファクタリング脂肪減量剤

たとえば、アクション 'DO_SOMETHING'をディスパッチした後は、まず3つのLOC内で自分の状態を更新する必要がありますが、プロジェクトが成長して追加機能を使用する必要がある場合、同じアクションを実行した後あなたが想像することは、同じツリーの多くの異なる領域に同じ方法で触れているように、何週間も費やした後に減速機が「太っている」と想像することができます。しかし、コードを適切に構造化するのは本当に難しいですツリーと1つの店舗)。私は与えられたシナリオを見つけることができるチュートリアルのほとんどで

  • 派遣「ADD_TODO」
  • 更新状態、私の場合は一方で
  • ドス

の配列に新しいTODOを追加

case SELECT_FILTER: 
    return Object.assign({}, state, { 
     oneProperty: ..., 
     anotherProperty: null, 
     nextProperty: false 
     // and the logic is getting bigger and bigger 
    }) 
  • dispa:それはようなものですTCH「SELECT_FILTER」
  • アップデート適用されるフィルタセクション(適用されたフィルタのUIの要約)この
  • コピー
  • 明らかサーバーからデータをフェッチするために使用されます
  • 更新クエリ
  • 来月このフィルタする必要があることまた...

:/

私は "減速のセット" を作成しようとした - ので、フィルターの減速、リストの減速などをしかし、問題は私が同じページで作業していて、着信機能がクロスカッティングの変更を導入していることです。シンプルなグループ化は小規模なアプリケーションでは大丈夫でしたが、今では各減速機が私の国の多すぎる部分に興味を持っているようです。

私の質問はどのように私のレデューサーを適切に構造化するのですか?たぶん私はあまりにも多くの "ローカル状態"を状態ツリーに入れますか?または、他の何か?私はあなたのソリューションが減速器を構成し構造化することに関連することを楽しみにしています。

答えて

1

去年、私は"Structuring Reducers" :)と呼ばれるReduxドキュメントのセクションを書きました。それは、減速器論理を構成し、構成するためのいくつかの有用な技法を示している。特に、"Beyond combineReducers""Reusing Reducer Logic"のセクションに興味があるかもしれません。

私の"Practical Redux" tutorial seriesはまた、いくつかの高度な減速材構造、特にPractical Redux, Part 7: Form Change Handling, Data Editing, and Feature Reducersのポストを示しています。

さらに大きな動作を形成するために順次送出される複数の「プリミティブ」アクションをディスパッチすることも検討する価値があります。たとえば、BASIC_UPDATESPECIFIC_EXTRA_UPDATE_1、およびを連続して送出するサンクがあるとします。それに気付いているパフォーマンスに関する懸念がありますが、有効なアプローチです(さまざまなバッチ処理戦略を使用して解決できます)。詳細については、dispatching multiple actionsreducing store notification eventsの私のブログ投稿Idiomatic Redux: Thoughts on Thunksと私のReduxアドオンカタログのStore#Store Change SubscriptionsセクションのRedux FAQの項目を参照してください。

+0

多くの素晴らしい読書!ありがとう! – psmyrdek

関連する問題