Redux 我该如何清除州的一部分
有没有一种优雅的方式来清除一个状态的碎片?我的状态中有7个数据片,我希望在删除其余数据片的同时保持其中一个数据片处于活动状态。我是否需要运行每个还原程序并手动擦除每个还原程序中的切片,还是有其他方法Redux 我该如何清除州的一部分,redux,react-redux,Redux,React Redux,有没有一种优雅的方式来清除一个状态的碎片?我的状态中有7个数据片,我希望在删除其余数据片的同时保持其中一个数据片处于活动状态。我是否需要运行每个还原程序并手动擦除每个还原程序中的切片,还是有其他方法 提前感谢…您可以执行以下操作: const resetState = () => ({ type: 'RESET_STATE' }) const appReducer = combineReducers({ /* your app’s top-level reducers */ })
提前感谢…您可以执行以下操作:
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))
}
}
这是一个可能的解决方案-纯函数和thunks的混合-尽管我不确定为什么要重置状态的这么多部分。我不是在谴责你的决定,我只是想找出一个不完全是人为的用例
以下是可能的,因为我们使用纯函数
此外,我还引用了这篇文章,因为它非常有用
希望这有帮助我找到的最佳解决方案是在创建切片时使用
额外还原功能。这使得该片段能够收听其他事件并实现我想要的
参考:
从“../redux/actions”导入{LOGOUT_USER};
...
常量reduceResult=createSlice({
名称:切片,
initialState:initialState[状态],
减速机:此._generateReducers(),
外部减速器:(生成器)=>{
builder.addCase(注销用户,(状态、操作)=>{
返回{…this.initialState};
});
//如果没有匹配的其他处理程序,则为默认情况
//.addDefaultCase((状态、操作)=>{});
},
});代码>当用户点击注销按钮时,我们需要清除整个状态。但是,当他们点击home按钮时,我们需要清除他们在应用程序中构建的对象的状态切片。我们不希望他们的登录凭据被清除。这对于我们为什么需要清除状态的特定部分有意义吗?是的,这是一个很好的用例。我提到的那篇文章肯定适用于你的情况