首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >组件是否应该在angular2中加载自己的数据?

组件是否应该在angular2中加载自己的数据?
EN

Stack Overflow用户
提问于 2017-03-13 12:27:14
回答 2查看 1.1K关注 0票数 3

我的应用程序有一个主页,其中包含一个复杂的datatable组件。目前,主组件加载所有服务,然后将它们注入datatable中,这非常简单,但当我不得不加载一些数据时,比如行单击事件,情况就变得更加复杂了。

,我的问题是:如果页面加载服务,然后将数据注入组件中,那么会更好吗?或者组件本身应该担心它呢?我想从最好的练习开始,避免任何未来的陷阱。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-13 12:52:00

这是一个您必须根据场景为每个组件做出的决定,因为这完全取决于用例。

我认为您的组件应该只使用服务和请求数据。它不应该关心如何&从哪里检索数据,因为它可以通过服务来处理how & where部分。

把您的组件想象成智能的和愚蠢的组件。

智能(状态)组件使用服务来获取数据,并在其模板中使用该数据。

Dumb (无状态)组件将仅用于向用户表示,并希望通过输入绑定作为属性来获取数据。因此,这个组件总是需要父组件的数据。如果它使用绑定获取所有所需的数据,那么它将在应用程序中的任何地方工作。

组件的概念:

组件概念背后的思想是使应用程序的小部分可重用。因此,这是您需要做出的决定,以确定您希望您的组件具有多大的可重用性。

示例:我们有一个产品列表组件和产品细节组件.产品列表组件使用一个名为ProductService的服务来获取数据。

案例1:如果您的应用程序只需要有一个视图,产品详细信息将始终作为嵌套组件存在于产品列表组件中,则只需将该列表组件作为智能组件。

当选择产品项时,它使用名为product的输入属性将该项传递给产品详细信息组件。

在这种情况下,如果用户需要的所有信息在第一次调用中已经存在,则不需要进行另一次HTTP调用来获取产品细节。

如果说您只拥有选定产品的子集产品信息,那么请看下面的案例2。

案例2:如果您的应用程序可能需要在其他地方没有父列表的产品详细信息,那么允许这个产品细节组件直接使用服务。

因此,这将是一个独立的组件,不需要依赖任何其他组件。

该组件只需要一个产品id作为输入,它将使用服务来获取该产品id的产品详细信息。因此,该组件可以在应用程序中的任何位置使用,包括在产品列表组件中,您只需将所选产品的id传递给该组件。

我有个博客,它使用产品列表和产品细节组件,两者都使用一个服务来获取数据。

票数 6
EN

Stack Overflow用户

发布于 2017-03-13 13:00:00

这是整个“智能组件与表示组件”(或有状态组件与无状态组件)的讨论。角大学有一篇关于这个的博客文章如果你想读更多。

基本建议是限制与数据检索服务交互的组件的数量,并将尽可能多的组件从输入接收到数据,并将数据作为输出发送出去。这样做的组件被认为是无状态/表示/哑的,因为它的所有数据都来自它的输入。它就像编程语言中的纯函数--纯函数更容易推理,因为它没有副作用,其返回值完全取决于它的输入。

如果您的大部分组件被设置为表示/哑组件,那么它有望导致一个不那么复杂的系统进行推理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42763642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档