使用ngrx/store更新store的正确方法

The right way of using ngrx/store to update store

我正在学习 ngrx/store 并且我有一个组件调用服务以从服务器获取一些数据,因为我重构它以使用 ngrx/store,我不知道在哪里更新商店。

据我所知,我有 2 个选择:

  1. 从组件中调用服务,获取数据,并使用dispatch更新存储。
  2. 从组件调用服务,服务将使用 dispatch 更新商店状态。组件可以订阅那部分状态(使用 select),当服务获取数据并更新状态时,组件将通过商店订阅获取更新。

哪条路是正确的 ("Best Practice")? (也许还有另一个我应该这样做的原因?)

你应该使用@ngrx/effects。

  1. 组件发送一个动作:LOGIN
  2. 效果捕捉动作。
  3. 效果触发服务获取数据
  4. 使用数据执行 returns 新操作。
  5. Reducer 以数据作为有效负载获取新操作并构建状态。

这是最佳做法。

See my repo for examples of using effects

Memroy Game (with effects)