0
有沒有清除狀態片段的優雅方法?在我的狀態下,我有7個數據片,我想保留一個數據片,同時擦除其餘的數據。我是否需要運行每個減速器並手動擦除每個減速器中的切片,或者還有其他方法嗎?如何清除狀態片段
在此先感謝...
有沒有清除狀態片段的優雅方法?在我的狀態下,我有7個數據片,我想保留一個數據片,同時擦除其餘的數據。我是否需要運行每個減速器並手動擦除每個減速器中的切片,或者還有其他方法嗎?如何清除狀態片段
在此先感謝...
你可以做到以下幾點:
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?
希望這有助於
當用戶點擊退出按鈕,我們需要清理整個狀態。但是,當他們點擊主頁按鈕時,我們需要爲他們在應用程序中構建的對象清除狀態的切片。我們不希望他們的登錄憑證等事情被清除。這對我們爲什麼要清除特定的國家部分是否有意義? – nikotromus
是的,那麼這是一個很好的用例。我引用的文章當然適用於您的案例 –