ngrx,如何从api获得一个起始状态?

时间:2017-02-28 19:32:26

标签: ngrx

我的reducer的起始状态为空数组:

folderReducer(state:Array<Folder> = [], action: Action)

我想填充起始状态,所以当我这样做时

store.subscribe(s => ..)

我得到的第一项来自数据库。我认为这样做的方法是使用ngrx / effects,但我不确定如何。

2 个答案:

答案 0 :(得分:10)

您的商店始终具有您在reducer-function中定义的初始状态初始状态的主要目的是确保应用程序能够启动并且不会遇到任何空指针异常。并且它还设置了您的应用程序以开始进行第一次api-calls等。 - 因此您可以将其视为技术初始状态

如果您想在启动时使用api-data填充您的商店,您可以按照在任何其他操作期间添加/修改数据的相同方式执行此操作 - 只需“最初加载数据”的操作不是由某些用户互动触发的,而是通过:

  • 在您的根组件加载时
  • 或作为构造函数中服务的一部分

如果您想要在API调用完成之前阻止特定组件显示任何内容,则必须调整显示组件以根据您的状态显示或隐藏数据(例如,通过在您的satet中实现标记{ {1}})。

答案 1 :(得分:1)

现在支持动态初始状态,请参阅:https://github.com/ngrx/platform/blob/master/docs/store/api.md#initial-state-and-ahead-of-time-aot-compilation

另见:https://github.com/ngrx/platform/issues/51

如果数据库是本地的,我只会这样做,否则请求将阻止加载应用程序。