我对文档感到困惑。我正在尝试使用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 的存储引擎在一般情况下可以具有异步性质。

处理该问题的常见模式如下:

  1. 您的应用以未初始化的存储状态启动
  2. 它向您的用户显示某种预加载器
  3. 应用程序创建加载程序并加载存储的状态:const load = storage.createLoader(engine);加载(存储);
  4. 等待存储重新水化并隐藏预加载器。

还有另一个存储持久库:redux-persist 。但初始化过程的工作方式相同,只是您不必显式调用 load


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!