reactjs - 在组件外部访问的 Redux 存储返回初始状态

标签 reactjs react-native redux redux-persist

我想知道我想要实现的目标是否可行,如果可行,那么我想找出我做错了什么。 我正在使用react-native-threads库来创建一个单独的“线程”。里面应该有一些 setInterval 函数来检查应用程序的当前状态,比如每 20 秒检查一次。 现在在该线程中,我试图做一些类似于该问题的最佳答案中所描述的事情: What is the best way to access redux store outside a react component? 但是,我使用的是 redux-persist,因此商店配置文件中没有简单的“store”变量。 商店设置代码:

    const rootReducer = combineReducers({
    appState: appStateReducer,
    entries: entriesReducer,
    listHelper: listHelperReducer,
    authenticate: authenticateReducer
})

const persistConfig = {
    key: 'root',
    storage,
    stateReconciler: autoMergeLevel2,
    blacklist: [ 'appState' , 'listHelper'],
    whitelist: ['authenticate' , 'entries']

}
const pr = persistReducer(persistConfig, rootReducer)
const configureStore = () => {
    const store = createStore(pr,  devToolsEnhancer({ realtime: true, hostname: 'localhost', port: 8082 }))

    const persistor = persistStore(store)
    return { persistor, store }
}
export default configureStore

我尝试从该文件导入configureStore并访问index.thread.js内的状态:

console.tron.log(configureStore().store.getState());

但是,这会返回初始状态。我需要补液后的当前状态。 有没有人尝试解决类似的问题?我将非常感谢任何提示。谢谢。

编辑:这是调用configureStore的index.js文件。

const store = configureStore();
const RNRedux = () => (
  <Provider store={store.store}>
    <PersistGate loading={<LoadingScreen />} persistor={store.persistor}>
      <App />
    </PersistGate>
  </Provider>
);


AppRegistry.registerComponent("ProjectName", () => RNRedux);

最佳答案

您可以在商店文件中调用 createStore 并将其导出。

const pr = persistReducer(persistConfig, rootReducer);
const store = createStore(pr,  devToolsEnhancer({ realtime: true, hostname: 'localhost', port: 8082 }))
const configureStore = () => {
    const persistor = persistStore(store)
    return { persistor, store }
}

export default configureStore

现在您可以像下面一样使用商店。

console.tron.log(configureStore.store.getState());

关于reactjs - 在组件外部访问的 Redux 存储返回初始状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52369728/

相关文章:

reactjs - 在 reducer 之后调用 Redux 中间件

reactjs - 导入 keras-js 将破坏相关功能和组件的单元测试

javascript - 错误: Target container is not a DOM element react/react-redux

reactjs - 如何使用 React 功能组件在 CanvasJS 中实现动态更新动画?

ios - 使用 Express 连接到 Amazon RDS

android - 在 Picker 中添加 API 数据值 react native

reactjs - 如何使用 react 和 django rest 框架将图像上传到 aws s3

javascript - 扩展 Material UI ListItem 的正确方法是什么?

javascript - 通过 React 延迟导入和 Webpack 不会发生代码分割

ios - facebook SDK react native : no framework search path