使用eventemitter将数据从父组件发送给子组件(Angular)的原因



在学习Angular时,我意识到没有必要使用eventemitter父组件发送数据子组件eventemitter用来从子组件发送数据父组件.

  • 这是由于javascript的限制,或者Angular自己创建这样的机制,如果是这样,原因是什么?
  • 我真的在寻找对这个的基本理解,并且会如果有人能给我一点提示,我将不胜感激。

我认为原因是(和Angular大多数时候一样)变更检测。一旦父属性发生更改,组件将尝试检测更改。这也将触发子组件中的变更检测(因为属性可以直接传递给子组件)。

这意味着隐式数据流是从父节点到子节点,这将导致只需要在这个方向上支持变更检测。如果另一个方向也被支持,你基本上可以渲染你的整个应用程序的任何更改。 这就是为什么需要有一个显式的原因。从孩子到父母传播变化的流程。因此使用EventEmitter。

请记住,您正在处理树形结构。处理更改down树很简单(遍历树),但是在两个方向上处理它们(向上和向下遍历)会导致每次遍历整个树。

请注意,我所知道的所有其他框架都使用相同的方法。Props(就像在React中一样)可以隐式地传递给子组件,而更改可以"冒泡"。

最新更新