1

我对文档感到困惑。我正在尝试使用Redux-storage中间件,这就是他们显示商店是使用中间件创建的方式:

const middleware = storage.createMiddleware(engine);
const createStoreWithMiddleware = applyMiddleware(middleware)(createStore);
const store = createStoreWithMiddleware(reducer);

但是Redux 文档显示了这一点:

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。我在这里错过了什么?

4

1 回答 1

2

你实际上什么都没有错过,这是预期的行为redux-storage:在创建 redux 存储和它被存储的数据填充的那一刻之间存在差距。那是因为提供给的存储引擎redux-storage createLoader在一般情况下可以具有异步性质。

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

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

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

于 2017-05-14T18:40:50.877 回答