Redux 状态未在开发中的整个应用程序中更新

Redux state isn't being updated across the app in development

我在使用 redux 时遇到了一个非常奇怪的问题。在我当前的应用程序中,我决定使用注销模式 .

基本上是这样的:

const withLogout = (state, action) => {
  if (action.type === UserActions.logout.toString()) {
    state = undefined
  }
  return rootReducer(state, action)
}

在调度注销操作后清除状态。我向 reducer 添加了日志,它们都显示状态正在重置为默认值。 React Native Debugger 显示相同的内容。

但是,connect(react-redux) 函数中的状态不会改变。更奇怪的是,看起来该函数检测到状态已更改的事实,因为 mapState 中的记录器函数正在被触发。但是记录器的输出显示那里的状态没有改变。组件也没有得到更新。

正如我在标题中提到的,此问题仅在开发模式下发生。一旦我构建应用程序并安装它,一切都会按预期开始工作。而且它不是由调试器引起的。

有什么想法吗?

找到原因了。我不得不在几个无法使用 react-redux 发送操作的地方导入商店。这导致需要循环,有时会导致创建商店的多个实例。

我偶然发现了以下解决方案,可确保您在整个应用程序中使用相同的商店实例:使用以下模式而不是在多个地方导入商店:

    // somewhere in the code
    let store
    export const setStore = storeInstance => store = storeInstance 
    ...
    store.dispatch()

    // store index.js
    import { setStore } from 'someplace'
    ...
    setStore(store)