2017-02-23 76 views
0

有沒有清除狀態片段的優雅方法?在我的狀態下,我有7個數據片,我想保留一個數據片,同時擦除其餘的數據。我是否需要運行每個減速器並手動擦除每個減速器中的切片,或者還有其他方法嗎?如何清除狀態片段

在此先感謝...

回答

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)) 
    } 
} 

這是一個可能的解決方案 - 純函數和的thunk混合 - 雖然我不知道你爲什麼要重置你的狀態的很多部分。不是我譴責你的決定,我只是想弄清楚一個並非完全人爲的用例。

以下是可能的,因爲我們正在使用純函數。

此外,我引用這篇文章,因爲它是相當有幫助的。

How to reset the state of a Redux store?

希望這有助於

+0

當用戶點擊退出按鈕,我們需要清理整個狀態。但是,當他們點擊主頁按鈕時,我們需要爲他們在應用程序中構建的對象清除狀態的切片。我們不希望他們的登錄憑證等事情被清除。這對我們爲什麼要清除特定的國家部分是否有意義? – nikotromus

+0

是的,那麼這是一個很好的用例。我引用的文章當然適用於您的案例 –