2017-11-07 32 views
0

を制御することなく、減速からReduxのストア値へのアクセス減速、私はタイプLOCATION_CHANGEの行動に私の状態を更新するreact-router-redux(または唯一のアクションタイプへのアクセス権を与え、行動自体をディスパッチ他のライブラリ)を使用しています:は、私は異常事態で午前アクションの作成者

... 
case LOCATION_CHANGE: { 
    const deserialized = deserialize(action.payload.query, **foo**); 
    return { ...state, deserialized }; 
} 
... 

をマイdeserialize機能NEそれに応じて私の状態を更新するfooの値を編集しました。通常、私はアクションペイロードにgetState().fooを追加しますが、これはサードパーティのライブラリであるため、アクションペイロードは制御しません。サードパーティのライブラリを取り除く必要がないこの問題の簡単な回避策はありますか?

答えて

1

私はmarkeriksonのanswerを受け入れたが、ここで私が執筆を終わったミドルウェアです:

const locationChangeMiddleware = store => next => action => { 
    if (action.type === LOCATION_CHANGE) { 
    const { foo } = store.getState(); 
    return next({ 
     ...action, 
     payload: { 
     ...action.payload, 
     foo, 
     }, 
    }); 
    } 

    return next(action); 
}; 

今私の減速は、次のようになります。

... 
case LOCATION_CHANGE: { 
    const deserialized = deserialize(action.payload.query, action.payload.foo); 
    return { ...state, deserialized }; 
} 
... 
関連する問題