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
是的,那么这是一个很好的用例。我引用的文章当然适用于您的案例 –