从外部组件访问redux存储

从外部组件访问redux存储,redux,Redux,我将如何访问helpers.js文件中的redux存储(基本上是一个充满函数的文件,这些函数有助于派生/操作依赖于存储的某些数据) 问题是我不能从“/mystore”导入存储,因为我在configureStore.js中导出存储的方式是: export default () => { let store = createStore(persistedReducer, {}, applyMiddleware(ReduxThunk)); let persistor = persistS

我将如何访问helpers.js文件中的redux存储(基本上是一个充满函数的文件,这些函数有助于派生/操作依赖于存储的某些数据)

问题是我不能从“/mystore”导入存储,因为我在configureStore.js中导出存储的方式是:

export default () => {
  let store = createStore(persistedReducer, {}, applyMiddleware(ReduxThunk));
  let persistor = persistStore(store);
  return { store, persistor };
}
然后我在我的
App.js
中将其导入到一个PersistGate中,等待商店重新水化:

import React, { Component } from 'react';
import Router               from './Router';
import { Provider }         from 'react-redux';
import configureStore       from './configureStore';
import { PersistGate }      from 'redux-persist/integration/react';

export default class App extends Component {
  render() {
    return (
      <Provider store={configureStore().store}>
        <PersistGate loading={null} persistor={configureStore().persistor}>
          <Router />
        </PersistGate>
      </Provider>
    );
  }
}
import React,{Component}来自'React';
从“./Router”导入路由器;
从'react redux'导入{Provider};
从“/configureStore”导入configureStore;
从'redux persist/integration/react'导入{PersistGate};
导出默认类应用程序扩展组件{
render(){
返回(
);
}
}
这就是为什么应用程序可以通过道具访问商店,但我不知道如何在没有React.Component的情况下访问水合状态


如果我导入此文件并调用
store.getState()
我会得到一个新的存储(即具有初始状态的新存储,而不是包含本地数据的实际持久存储)。

因为导出的只是一个创建新存储的函数,所以无法创建新存储

如果没有上下文(例如,您这样做可能有原因,尽管我无法理解它是什么),只需在默认导出函数之外创建存储即可


您仍然可以将该函数导出为默认值,并将其存储为命名导出。

但是该存储是否会被水合?(也就是说,redux persist不会去商店)@WalterMonecke我不确定我是否理解。您正在导出的函数中创建存储。您的代码中没有任何东西规定需要在该函数中创建它——包括对其调用
persistStore
,您也可以在函数外部执行此操作。我完全不知道你为什么要把它当作函数来做。事实上,您在更新的代码中调用了该函数两次,因此您甚至没有得到与之相同的
存储
/
持久化器
组合。您是否介意对这些“助手”应该做什么以及您希望在什么环境下使用它们稍微进行一些说明?根据我的经验,大多数需要直接访问存储的功能通常可以用中间件的形式表示,它基本上解决了所有问题。但是根据您的描述,不清楚中间件是否适合该用例。