Redux等效于Angular2服务

时间:2017-02-28 00:35:00

标签: reactjs service redux

我来自一个Angular2世界,那里有服务可以正常加载数据等等,现在我在React,Redux应用程序上,并试图找出Redux中的Angular2服务的等价物(React) 。是Redux-thunk吗?

1 个答案:

答案 0 :(得分:3)

答案是

  • Angular服务具有加载数据的逻辑,通常返回一个Promise对象,该对象通过加载数据得到解析。

  • 使用Redux Thunk中间件,您可以创建异步动作创建器,您可以在其中放置数据加载的逻辑。但是不是直接返回Promise对象,而是等待数据解析并调度操作以更新加载数据的状态。 React组件通过props从Redux商店接收数据。 (请参阅react-redux中的connect()方法。)

  • 角度服务是提供特定功能的单例,例如$http,用于促进与远程HTTP服务器的通信。
  • Redux Thunk是一个中间件,除了允许您编写可以延迟调度操作的异步操作创建器,或者仅在满足某个条件时才调度,它不会做任何事情。动作创建者是创建动作的功能 - 它们不是为了提供其他功能,例如与后端服务器的通信。

话虽如此,通常是编码风格的问题,在何处以及如何编写加载数据的逻辑。

您可以使用基于Promise的{​​{3}}或其Fetch API功能或polyfill库。您也可以考虑使用Observables,但我认为这超出了主题范围。

与Angular服务一样,您可以将所有相关逻辑放在一个位置并导出它们。在您的动作创建者中,您可以调用这些包装器/帮助程序,监听解析/拒绝并使用已解析为有效负载的数据调度相应的操作。

您的Reducer在收到调度的操作后更新Redux存储,并将这些状态更改传播到React组件。这是 Flux架构如何工作数据如何从Redux Store流向React组件,AFAIK。

(我可能错了,如果有任何不正确的地方请纠正我,我对你的意见持开放态度。我仍然在寻找在React应用程序中实现服务的最佳实践。)