Javascript 是否通过调度重置其他减速器的状态?

Javascript 是否通过调度重置其他减速器的状态?,javascript,reactjs,redux,Javascript,Reactjs,Redux,对于注销,我必须重置所有内容,但是我有许多简化程序,也就是状态集合,我必须在每个简化程序中执行切换(type.logout):返回{},以便将所有内容重置为initialState export default combineReducers({ user, tickets, settings, manyMoreToCome }) 应用程序的initialState不应该是{},而是创建存储时传递的值 如果您正在实现某种本地状态持久化,这也被称为预加载状态 因此

对于注销,我必须重置所有内容,但是我有许多简化程序,也就是状态集合,我必须在每个简化程序中执行
切换(type.logout):返回{}
,以便将所有内容重置为initialState

export default combineReducers({
    user,
    tickets,
    settings,
    manyMoreToCome
})

应用程序的
initialState
不应该是
{}
,而是创建存储时传递的值

如果您正在实现某种本地状态持久化,这也被称为
预加载状态

因此,您通常不希望中断任何内容并将状态设置为空对象,而是应该执行以下操作:

// initialState should be exported somewhere in your application
// when the store is created, and imported in the reducer.
switch(action.TYPE){
    case types.LOGOUT:
    return { ...initialState };
}

重要的是,您不应该在多个reducer中执行任何操作
组合reducer
调用当前状态的所有reducer,如果不需要更改,每个reducer将返回原样状态,因此type.LOGOUT操作应该只在相关reducer上执行,这是
用户
设置
,取决于应用程序。

我将其设置为空对象的可能重复,只是为了证明我需要在每个还原器中捕获注销。您说过不应该在多个reducer中实现注销,因为您可能不知道这个问题。如果有多个用户在没有刷新的情况下登录和注销系统,您认为我只需要清除设置和用户权限吗?例如,一个用户单击了某个对象,因此票证缩减器不是原始的,然后他注销,更改的票证缩减器不清楚,导致下一个登录的用户出现问题。@jamie aden由于注销是用户发起的操作,我建议调度操作重置受此事件影响的所有其他缩减器。我发现
mapDispatchToProps
是一个很好的地方。您可以在那里调用
dispatch(ticketActions.reset())
。这样,其他减速机就不必关心为什么要重置某些东西,他们只是被指示在正确的时间重置。谢谢提示,最后我做到了这一点