2017-02-23 6 views
0

状態のスライスを消去するエレガントな方法はありますか?私は自分の状態で7スライスのデータを持っており、残りのものを消去しながら1つをアクティブにしたい。各レデューサーを駆け抜け、それぞれのスライスを手動で消去する必要がありますか、別の方法がありますか?あなたは次のことを行うことができ状態のスライスをクリアするには

答えて

2

事前に

おかげで...:

const resetState =() => ({ 
    type: 'RESET_STATE' 
}) 

const appReducer = combineReducers({ 
    /* your app’s top-level reducers */ 
}) 

const rootReducer = (state, action) => { 
    if (action.type === 'RESET_STATE') { 
    state = undefined 
    } 

    return appReducer(state, action) 
} 

function resetAndUpdateOneSlice() { 
    return (dispatch, getState) { 
    const slice = Object.assign({}, getState().slice) 
    //assuming your slice is an object 
    //just want to demonstrate cloning your data before you reset your state. 
    dispatch(resetState()) 
    dispatch(updateSliceOfState(slice)) 
    } 
} 

これは一つの可能​​な解決策である - 純粋関数とサンクの混合物 - 私はあなたが欲しい理由はわからないけれどもあなたの国の多くの部分をリセットします。あなたの決定を非難するわけではありません。私は、まったく考案されていないユースケースを見つけようとしています。

純粋な関数を使用しているので、次のことが可能です。

また、私はこの記事を参照しています。なぜなら、これは非常に役に立ちましたからです。

How to reset the state of a Redux store?

希望これは、ユーザがログアウトボタンをヒットすると、我々は全体の状態がクリア必要

+0

に役立ちます。しかし、彼らがホームボタンを押すと、アプリケーションで構築していたオブジェクトに対して状態のスライスが必要になります。ログイン情報がクリアされないようにします。特定の状態をクリアしたいのはなぜですか? – nikotromus

+0

はい、それは良い使用例です。私が参照した記事はあなたのケースに当てはまります –

関連する問題