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

问题描述 投票:0回答:1

我在redux上遇到了一个很奇怪的问题。在我当前的应用中,我决定使用注销模式suggested by Dan Abramov

基本上,看起来像这样:

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

分派注销操作后,状态将被清除。我将日志添加到减速器,它们都显示状态正在重置为默认值。 React Native Debugger显示了相同的内容。

但是,connectreact-redux)函数内部的状态不变。甚至很奇怪,该函数似乎检测到状态已更改,因为mapState中的记录器功能已被触发。但是记录器的输出显示状态并没有改变。组件也没有更新。

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

有什么想法吗?

reactjs react-native redux react-redux redux-persist
1个回答
0
投票

我找到了原因。我不得不在无法使用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)
© www.soinside.com 2019 - 2024. All rights reserved.