从外部组件访问redux存储
我将如何访问helpers.js文件中的redux存储(基本上是一个充满函数的文件,这些函数有助于派生/操作依赖于存储的某些数据) 问题是我不能从“/mystore”导入存储,因为我在configureStore.js中导出存储的方式是:从外部组件访问redux存储,redux,Redux,我将如何访问helpers.js文件中的redux存储(基本上是一个充满函数的文件,这些函数有助于派生/操作依赖于存储的某些数据) 问题是我不能从“/mystore”导入存储,因为我在configureStore.js中导出存储的方式是: export default () => { let store = createStore(persistedReducer, {}, applyMiddleware(ReduxThunk)); let persistor = persistS
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
,您也可以在函数外部执行此操作。我完全不知道你为什么要把它当作函数来做。事实上,您在更新的代码中调用了该函数两次,因此您甚至没有得到与之相同的存储
/持久化器
组合。您是否介意对这些“助手”应该做什么以及您希望在什么环境下使用它们稍微进行一些说明?根据我的经验,大多数需要直接访问存储的功能通常可以用中间件的形式表示,它基本上解决了所有问题。但是根据您的描述,不清楚中间件是否适合该用例。