如何使用本地数据存储创建redux存储?

时间:2017-05-14 17:16:20

标签: javascript redux local-storage indexeddb redux-store

我对文档感到困惑。我正在尝试使用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.我在这里想念的是什么?

1 个答案:

答案 0 :(得分:1)

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

要解决的常见模式如下:

  1. 您的应用以未初始化的商店状态启动
  2. 它向您的用户显示某种预加载器
  3. App创建加载程序并加载存储状态:const load = storage.createLoader(engine); load(store);
  4. 等待商店重新水化并隐藏预装载器。
  5. 还有另一家商店在那里使用lib:redux-persist。但初始化过程的工作方式相同,除非您不必明确调用load