角的“单向数据流规则”中提到的几个 时间 中 的文档,但没有在任何地方的角文档曾经明确(重点明确)定义的单向数据流规则。
这是我可以找到的最清晰的单向数据流规则定义:
从此页面:
组成视图后,Angular的单向数据流规则禁止对其进行更新。
足够公平,但是构成视图的确切含义是什么?什么构成了视图更新?我们不是一直在更新视图吗?
从此页面:
一个重要的断言[enableProdMode]禁用以验证更改检测过程不会导致对任何绑定的附加更改(也称为单向数据流)。
我不得不非常缓慢地阅读这句话大约8次,但我还是听不懂。当它说“也称为单向数据流”时,我假设也称为“单向数据流”是“更改检测过程不会导致对任何绑定的其他更改”。好吧,也许我们越来越近了。虽然很抽象。一个例子或类似的东西怎么样?
这两个相当不透明的blurb都是Angular文档,显然可以使我们不考虑单向数据流规则。似乎不足。
谁能更清楚地向我解释,最好是好像我很愚蠢?
编辑:我在此页面上找到了第三个线索:
模板表达式不应更改目标属性值以外的任何应用程序状态。
该规则对于Angular的“单向数据流”策略至关重要。您不必担心读取组件值可能会更改其他显示值。该视图应在整个渲染过程中保持稳定。
好的。您不必担心读取组件值可能会更改其他显示值。是那个角的单向数据流规则?我不这么认为,因为它似乎与该规则的其他提法不同。我还是很困惑。
在Angular pre v1.5中,双向绑定是常态,因此,如果您在组件中创建了子对象,则父对象会保留对它的引用,因此,如果您在父对象中更新了该对象,则会更新子对象,并且如果您更新了子对象中的对象,也更新了父对象。这会产生大量的开销,并且您会看到大量子组件保持与父组件的双向绑定的显着性能影响,例如,一个父容器组件加载乘客数据列表并为每个子容器显示一个子组件具有该乘客特定属性的乘客。父母被监视变化,每个孩子被监视变化,并且不断对其进行重新评估。
Angular1.5中引入了一种数据绑定方式,但这是Angular2性能提升的重要组成部分。数据从父级流到子级,但并非相反。如果父级数据发生更改,则这些更改将被下推到子级,但是如果子级发生更改,则这些更改将不会自动神奇地传播回父级。通过将事件更改后的数据显式发送回父级,并指示父级更新已更改的特定数据,可以管理从子级到父级的更新。数据流接管的一种方式是,父级使用更新的数据适当地更新子级。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句