2016-11-29 11 views
2

私は反応する/還元する。私はreduxのすべての部分がどのように相互作用するかを理解しようとしています。私に困っているのは、行動と減量者の関係を理解することです。アクションが呼び出されると、どのレデューサーを使用するのか店舗はどのように知っていますか?それはアクションタイプ名に完全に基づいていますか?型名は一意でなければならないのですか?減速機は誰に、あるいは何に対して新しい状態のオブジェクトを店舗や商売に渡しますか?Redux - アクションへのレデューサーの関係

私はそれを理解し、それはこのように書きます:

  1. store.dispatch(アクション)は、
  2. ストアは、アクションタイプ
  3. リデューサークローン現在の状態オブジェクトに基づいて、関連する減速機を見つけたと呼ばれています

答えて

4

1:どのレデューサーを使用するか店舗はどのようにしているのですか? - これはアクションタイプに完全に基づいています。

2:タイプ名は一意でなければなりませんか? - >これはルールではありません。しかし、大部分はそうです。各アクションには異なるタイプ名があり、対応するレデューサーが呼び出されます。

3:リデューサーは、誰に新しい状態オブジェクト、ストア、またはアクションを渡しますか? - >レデューサーは新しい状態オブジェクトをどこにも渡しません。基本的には、リスニングしているすべての反応コンポーネントに状態変更イベントをトリガーします。変更された状態をリッスンするすべてのコンポーネントは、新しいバージョンの状態で再レンダリングされ、DOMが更新されます。

+0

ありがとうございました。私は今一緒に物事を作り始めている。 – steveareeno

1

一般的に、完全な状態の原因となるのは1つの減速器だけです。

この還元剤は、それぞれ異なる状態のスライスに関与する異なる小さな還元剤機能に分割することができます。たとえばRedux's combineReducers() utilityでもそうすることができますが、手動で行うこともできます。

combineReducers()を使用した場合、各リダンダント機能が各ディスパッチアクションに対して実行されます。彼らは、アクションがその状態のスライスに影響を与えるかどうかを、アクションタイプに基づいて純粋に決定します。もしそうなら、このスライスの更新されたコピーが返されます。そのスライスがアクションの影響を受けていない場合、そのスライスは変更されずに戻されます。

1

典型的なRedux設定では、アクションはすべてのレデューサーにディスパッチされ、レデューサーはそのアクションを気にするかどうかを決定することになります。一般的なパターンは、action.typeをチェックする減速機のスイッチであることが気にアクションとちょうどこのような現在の状態を返すデフォルトの場合の例があります。この場合

export default (state = false, action) => { 
    switch (action.type) { 
    case START_LOADING: 
     return true; 
    case STOP_LOADING: 
     return false; 
    default: 
     return state; 
    } 
} 

を、私は私に言っています減速機では、タイプがSTART_LOADINGまたはSTOP_LOADINGのアクションだけが気になります。それ以外の場合は、以前の状態に戻す必要があります。

Redux(とFlux)をよく理解するために、私はLin ClarkのCode Cartoonsか、同じものの大部分をカバーする彼女のvideoをチェックアウトすることをお勧めします。

関連する問題