我对文档感到困惑。我正在尝试使用Redux-storage中间件,这就是他们如何显示使用中间件创建商店的方式:
const middleware = storage.createMiddleware(engine);
const createStoreWithMiddleware = applyMiddleware(middleware)(createStore);
const store = createStoreWithMiddleware(reducer);
但是Redux docs显示这个:
let store = createStore(
todos,
[ 'Use Redux' ], // How do I put here the data from the redux-storage?
applyMiddleware(middleware) // here goes the redux-storage
)
createStore
需要传递初始存储值,但如果没有存储,我无法加载存储的值。这是一种陷阱 22。我在这里错过了什么?
请您参考如下方法:
你实际上没有错过任何东西,这是 redux-storage 的预期行为:创建 redux 存储和填充存储数据的那一刻之间存在差距。这是因为提供给 redux-storage
createLoader
的存储引擎在一般情况下可以具有异步性质。
处理该问题的常见模式如下:
- 您的应用以未初始化的存储状态启动
- 它向您的用户显示某种预加载器
- 应用程序创建加载程序并加载存储的状态:
const load = storage.createLoader(engine);加载(存储);
- 等待存储重新水化并隐藏预加载器。
还有另一个存储持久库:redux-persist 。但初始化过程的工作方式相同,只是您不必显式调用 load
。