2017-02-28 50 views
1

我来自一个Angular2世界,其中有服务可以执行正常的数据加载等,现在我在React,Redux应用程序中,并试图找出与Angular2服务等效的内容在Redux(React)中。它变回红色吗?Redux等效于Angular2服务

回答

3

答案是

  • 角服务必须加载数据,通常返回获取与加载的数据解决的Promise对象的逻辑。

  • 借助Redux Thunk中间件,您可以创建异步操作创建器,并将数据加载逻辑放在此处。但不是直接返回一个对象,而是等待数据解析并分派一个动作来更新加载数据的状态。 React组件通过道具从Redux商店接收数据。 (参见从react-reduxconnect()方法。)

  • 角服务是用于促进与远程的HTTP服务器的通信提供特定的功能,如$http单身。
  • Redux Thunk是一个中间件,除了允许您编写异步操作创建器(可以延迟操作的分派)或仅在满足特定条件时才分派时,它什么也不做。动作创建者是创建动作的函数 - 它们不打算提供其他功能,例如与后端服务器的通信。

就这么说,它通常是编码风格的地方,你怎么写逻辑来加载数据。

您可以使用Fetch API或其polyfill函数或axios库,两者都是基于Promise的。你也可以考虑使用Observables,但我认为它超出了主题。

当您使用Angular服务时,您可以将所有相关逻辑放在一个位置并导出它们。在你的动作创建者中,你可以调用这些包装器/帮助器,监听解析/拒绝,并派遣一个适当的动作,并将数据解析为有效载荷。

您的缩减器在接收到分派的操作后会更新Redux存储,并将这些状态更改传播到React组件。这是Flux体系结构如何工作数据如何从Redux Store流向React组件,AFAIK。

(我可能是错的,请纠正我,如果事情是不正确的,我愿意接受你的意见,我还是上找出落实在阵营应用服务的最佳实践方式。)

+0

大答案!我唯一要改变的地方就是把它们叫做“包装/帮手”。我不相信有一个商定的术语,因为我已经看到他们称为包装,帮手,服务,客户端,api和其他我不会重复的事情,因为他们没有多大意义。 –