2017-01-04 2 views
1

を使用している場合ので、私は減速していaction.typeからの減速を指定します。ReduxのはcombineReducer

const buttonReducer = (state = { buttons: [] }, action) => { 
    switch(action.type) 
    { 
     case "add": 
     { 
      state = { ...state, buttons: [...state.buttons, action.payload] } 
      break; 
     } 

     case "minus": 
     { 
      state = { buttons : state.buttons.filter(item => item !== action.payload) } 
      break; 
     } 
     default: 
      break; 
    } 
    return state; 
}; 

は今、私は別の減速機を持っていると言うのだけで、これに似ている(我々はそれcomponentReducerを呼ぶことにします)ケースのコードが変更されました。今私はcombinedReducersをした後にどの減速器に行くべきかを指定するにはどうすればいいですか?

const reducers = combineReducers({ 
    component: componentReducer, 
    button: buttonReducer 
}); 

store.component.dispatch(...)は動作しますか?それとも単にケースの名前を変更するだけですか?

接続:

const Search = connect(
    (store) => 
    { 
     return { number: store.component.number}; 
    }) (SearchComponent); 
+0

コンポーネントを店舗に接続するのに 'react-redux'を使用していますか? – Chris

+0

はい、すでに接続されています。私は自分の接続がどのように見えるかを更新します。 –

答えて

1

あなたがそれらの2つの減速に同じディスパッチアクション名を使用する場合は、dispatch({action: 'add', reducer: 'button', payload: {..your data goes here..}})などの発送には3番目の変数を使用することができます。そして、あなたはまた、このようなあなたの減速に条件を追加する必要があります。

const buttonReducer = (state = { buttons: [] }, action) => { 
    if(action.reducer == 'button'){ 
    switch(action.type){ 
     ... your code goes here ... 
    } 
    } 

あなたが上記の操作を行うことができますが、私はあなたがその溶液から離れて滞在し、彼らは正確に何をすべきかに応じて、あなたの派遣アクションに名前を付けるにこだわるお勧めしますたとえばaddではなく、ADD_BUTTONADD_COMPONENTのようになります。

+1

これです。私の答えは完全にポイントを逃した、あなたはそれを釘付け。 – Chris

+0

大丈夫ですが、可能でない場合は、ケースの名前を 'add_button'などに変更します。 –

関連する問題