2016-10-25 29 views
3

我学习NGRX /店,我有打电话给一个服务组件从服务器得到一些数据,我重构它使用NGRX /存储的正确方法,我不知道在哪里更新商店。使用NGRX /存储更新商店

据我了解我有两个选择:

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

这是个正确的(“最佳实践”)的方式? (也许还有另外一个我为什么要这么做?)

+0

你有没有考虑过使用[NGRX /效果](https://github.com/ngrx/effects/blob/master/docs/intro.md)? – cartant

+0

@cartant不,因为我没有听说过它(他们没有在“全面介绍@ ngrx /商店”和我看到的egghead视频中提及它)。稍微阅读后,这似乎是正确的路要走。谢谢! – Nir

回答

13

你应该使用@ NGRX /效果做到这一点。

  1. 组件调度动作:LOGIN
  2. 影响捕捉动作。
  3. 效果触发服务获取数据。
  4. 效果返回数据的新操作。
  5. Reducer获取数据作为有效负载的新操作并构建状态。

这是最好的做法。

See my repo for examples of using effects

Memroy Game (with effects)

+0

答案是正确的。但是没有示例代码会使新手对ngrx很难理解。 – notANerdDev

+0

@notANerdDev你是对的,请检查我的回购正确的方式效果的例子。例如记忆游戏:https://github.com/wizardnet972/memory-game-ngrx –