2016-06-14 6 views
0

私はpepperoni-app-kitを使用しています。これは、反応性ネイティブ、反応性還元性、還元性ループおよび様々な他のものを使用しています。1つの還元ダックから別の還元ダックに状態を渡すには?

認証を担当するRedux Duckが1つあります。ログインが完了すると、重要なセッション情報がストアの['auth', 'env']セクションに書き込まれます。

私は、データリストの閲覧を担当するブラウズという別のアヒルを持っています。そのアヒルは、サーバー要求を行うために、envデータにアクセスする必要があります。

状態ツリーは次のようになります。

state 
    +-- auth 
     +-- env 
    +-- browse 
     +-- ... 

私はビューにconnect()['auth','env']データを自分のBrowseViewContainerを使用して、私のBrowseViewにも問題を['auth','env']を渡さないする方法を見つけ出すことができます。例えば:

connect(
     state => ({ 
     env: state.getIn(['auth', 'env']), 
     ... 
     }) 
    )(BrowseView) 

しかし、私は私のBrowseViewでenvを必要としないアヒルがenvを必要とするHTTP要求を行うものですので、私は、私のブラウズアヒルでそれを必要とします。

州の情報(env)を状態ツリー(auth)の一部から別のもの(browse)に渡すための最良の方法は何ですか?あるいは、他のアヒルからより簡単にアクセスできるように、この情報を保存するためのより良い場所がauthにありますか?

答えて

1

これを行う方法の1つはredux-thunkであり、pepperoni-app-kitはすでにredux-thunkを使用しています。

アクションクリエイターからアクションを返す代わりに、サンクオブジェクトを返し、サンクは完全な状態ツリーにアクセスできます。

export function list() { 
    return (dispatch, getState) => { 
    const env = getState().get('auth').get('env') 
    dispatch({ 
     type: LIST_RESPONSE, 
     payload: getList(env) 
    }) 
    } 
} 
:サンクを使用して

export function list() { 
    const env = ??? // where to get env? 
    return { 
    type: LIST_RESPONSE, 
    payload: getList(env) 
    } 
} 

そして書き直さ1:

は例えば、私のオリジナルアクションの作成者は、ように見えました

関連する問題