Redux 我该如何清除州的一部分

Redux 我该如何清除州的一部分,redux,react-redux,Redux,React Redux,有没有一种优雅的方式来清除一个状态的碎片?我的状态中有7个数据片,我希望在删除其余数据片的同时保持其中一个数据片处于活动状态。我是否需要运行每个还原程序并手动擦除每个还原程序中的切片,还是有其他方法 提前感谢…您可以执行以下操作: const resetState = () => ({ type: 'RESET_STATE' }) const appReducer = combineReducers({ /* your app’s top-level reducers */ })

有没有一种优雅的方式来清除一个状态的碎片?我的状态中有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))
  }
}
这是一个可能的解决方案-纯函数和thunks的混合-尽管我不确定为什么要重置状态的这么多部分。我不是在谴责你的决定,我只是想找出一个不完全是人为的用例

以下是可能的,因为我们使用纯函数

此外,我还引用了这篇文章,因为它非常有用


希望这有帮助

我找到的最佳解决方案是在创建切片时使用
额外还原功能。这使得该片段能够收听其他事件并实现我想要的

参考:

从“../redux/actions”导入{LOGOUT_USER};
...
常量reduceResult=createSlice({
名称:切片,
initialState:initialState[状态],
减速机:此._generateReducers(),
外部减速器:(生成器)=>{
builder.addCase(注销用户,(状态、操作)=>{
返回{…this.initialState};
});
//如果没有匹配的其他处理程序,则为默认情况
//.addDefaultCase((状态、操作)=>{});
},

});当用户点击注销按钮时,我们需要清除整个状态。但是,当他们点击home按钮时,我们需要清除他们在应用程序中构建的对象的状态切片。我们不希望他们的登录凭据被清除。这对于我们为什么需要清除状态的特定部分有意义吗?是的,这是一个很好的用例。我提到的那篇文章肯定适用于你的情况