2017-10-23 10 views
0

還元剤と反応して反応し、反応して還元するためにReduxを使用しています。私は2つの減速を組み合わせることcombinereducers()を使用します。ReduxのcombineReducerにサブスクライブするにはどうすればいいですか?

今、私は私の減速にいくつかの変更をサブスクライブ
const reducers = combineReducers({ 
    sessiontype, 
    userdata 
}) 

store.subscribe((state, previousState) => { 

     //Do something 

    }); 

は、どのように私は私のuserdata減速にのみ加入しますか?私は私のセッションタイプの減速機の状態を変更するとき、私はあなたのuserdata減速機の状態を変更する必要があります(そして、私のstore.subscribe()で無限のサイクルを作成するため、 )

答えて

2

Reduxの周りのコンセプトは、あなただけの1 stateと1 reducerを持っていることであるあなたが別の減速を持っているアイデアはcombineReducers()により導入されただけで、実装の詳細である - 。それはあなたがパーツであなたのレデューサーを考えることができますが、あなたにアプリケーションはreducerです。this GitHub threadに関するディスカッションを確認してください。

react-reduxパッケージ内の機能を使用すると、コンポーネントがアクセスできる部分をreducerのどの部分にするか選択します。これはあなたの問題を解決するのに役立ちます。 sessiontypeにアクセスできるコンポーネントでreducerが更新された場合は、同じコンポーネントのアップデートuserdataを使用できます。これを行うには、単にdispatchの2つのアクションをstoreに追加するだけです。また、subscribeは実際にはstoreにアクセスできないことを覚えておいてください。何かが変更されたことがわかりました。 subscribe関数内では、実際にデータを読み取るにはgetState()に電話する必要があります。続きを読むhereを読んでください。

このような何か試してみてください:

store.subscribe((state, prevState) => { 

    // run a check of conditions for an action being dispatched 
    // if you don't specify conditions, you'll end up in an 
    // infinite loop 
    if (stateHasFieldOrValue) { 

    // dispatch update to sessiontype 
    store.dispatch(updateSessionType(payload)); 

    // dispatch update to userdata 
    store.dispatch(updateUserData(payload)); 
    } 
}); 
関連する問題