2017-08-26 43 views
0

即使要处理的数据不在不同组件之间共享,我是否应该使用Redux进行所有API调用? 示例:用户列表组件必须检索用户列表并将其显示在界面中。这些用户不在该组件之外使用。 API调用是否必须通过actions/redurs/effects来实现?如何实现Redux?

+0

结帐示例应用程序https://github.com/ngrx/platform/blob/master/example-app/README.md查看工作原理 – Kuncevic

回答

-1

这取决于你的课程目标。如果你只想尝试Angular,那不是你的选择。如果你计划你的应用会增长 - 这不是个坏主意。实际上,如果您将使用“按功能模块”结构,您可以轻松地将ngrx添加到您的项目中。

Redux是关于国家管理。也许你认为现在是过度杀伤力。但请确保您的应用会增长。您将获得更多模块,处理所有事情将会更加困难。

此外,REDX还为您的应用程序添加了一些结构。我相信如果新人加入了团队,如果团队使用了redux,那么新人将会轻松地开展项目。即使他们是小辈,让他们阅读关于redux/ngrx,他们可以轻松跟踪数据在应用程序中的流动方式。事实上,即使反应开始出现在角色团队中,情况也是如此,反之亦然。至少对我而言:我和我的同事可以轻松地讨论问题并成功解决问题,但我使用Angular并使用React。

你应该遵循API调用的redux过程吗?好。技术上你可以忽略这一点。但为什么? Redux上有很多有用的工具。例如redux开发工具。如果你使用动作来进行api调用,那么你也可以在Redux开发工具中看到它们。您可以看到操作列表,操作负载(您从服务器收到的内容),此操作如何更改您的状态。

+0

谢谢。 对于Redux项目,我是否必须遵循我所有API调用的redux过程? –

+0

为什么不呢? Redux是关于国家管理的。数据,从服务器检索到的事件是您应用程序状态的一部分。那么,为什么你应该忽略这个利润?你将会有日志,因为redux你将有清晰的数据方式。 –

+0

我有很多API调用,并且在很多情况下,它只是用于构建单个组件,而不会与其他组件共享数据。使用redux很难做到这一点。 –

0

如果数据和逻辑都是自包含的,则不需要使用redux模式,因为它只会引入不必要的复杂性。

https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367

+0

完全同意@Meeker。如果您考虑将来扩展它,您可以将Redux视为您项目的替代方案。如果你只是创建一个单一的组件应用程序,我也建议不要使用Redux。 –

+0

是的,很明显。但我的问题是:在一个Redux项目中,即使对于不在组件之间共享的数据,所有API调用都必须遵循actions/redurs/effects过程。我在帖子中举了一个例子。 谢谢。 –

+0

不,他们不。事实上,如果您想要可共享且可重复使用且易于维护的组件,这是不好的做法。 – Meeker

0

首先什么是Redux?

终极版是JavaScript应用程序的应用状态管理器,并 通过在应用程序中的 单向数据流保持与通量架构的核心原则。 Redux应用程序只有一个全局的只读应用程序状态。通过在控制方式下更新它的操作集合或操作流程“减少”来计算该状态 。

Redux In Angular?

Redux的状态经理一直很受欢迎和有启发 创造@ngrx的,一组实现的 以同样的方式管理国家,以及一些中间件和工具在 模块Redux生态系统。 @ngrx创建时专门用于 Angular和RxJS,因为它非常依赖可观察的范例。 无论您在上面看到的组件进行管理使用NGRX店 (更新至第4版)的优势,现在升级的,我们直接在NGRX有懒加载 支持中使用特色模块

凡使用它?

一个小场景将使它的使用相当明确

我希望你可能已经使用Facebook的右:P所以如果你看@ Facebook的 网站,你会看到这样的Navbar多个组件,左图, 聊天箱等有没有想过当一个新的消息传递给你所有的 这些都是同时更新如何?如果他们去参加活动或 事件发射器,他们将被吞噬在意大利面代码海中。 哪个即使实现也很难调试或进行更改。

这里是使用ngrx状态管理的所有信息是 存储在一个地方,当数据的状态改变时,所有组件都被识别。看看堆栈溢出的这个答案 将清除更多的概念图像清晰。

如何实现Redux?

有两种选择,一种是ng-redux,另一种是ngrx。我个人非常喜欢ngrx及其广阔的社区和伟大的想法。

你可以看看@这link为计数器应用程序和添加列表到Ngrx v4。

如果你想看看使用整个ngrx suite实现的整个应用程序,看看this git repo这是部署在link

对此的引用来自我的gh-page,我在这里传播了Angular Concepts的词。