Angular的“单向数据流规则”是什么?

杰森·斯威特

角的“单向数据流规则”中提到的几个 时间 的文档,但没有在任何地方的角文档曾经明确(重点明确定义的单向数据流规则。

这是我可以找到的最清晰的单向数据流规则定义:

从此页面

组成视图后,Angular的单向数据流规则禁止对其进行更新。

足够公平,但是构成视图的确切含义是什么?什么构成了视图更新?我们不是一直在更新视图吗?

从此页面

一个重要的断言[enableProdMode]禁用以验证更改检测过程不会导致对任何绑定的附加更改(也称为单向数据流)。

我不得不非常缓慢地阅读这句话大约8次,但我还是听不懂。当它说“也称为单向数据流”时,我假设也称为“单向数据流”是“更改检测过程不会导致对任何绑定的其他更改”。好吧,也许我们越来越近了。虽然很抽象。一个例子或类似的东西怎么样?


这两个相当不透明的blurb都是Angular文档,显然可以使我们不考虑单向数据流规则。似乎不足。

谁能更清楚地向我解释,最好是好像我很愚蠢?


编辑:我在此页面上找到了第三个线索

模板表达式不应更改目标属性值以外的任何应用程序状态。

该规则对于Angular的“单向数据流”策略至关重要。您不必担心读取组件值可能会更改其他显示值。该视图应在整个渲染过程中保持稳定。

好的。您不必担心读取组件值可能会更改其他显示值。那个角的单向数据流规则?我不这么认为,因为它似乎与该规则的其他提法不同。我还是很困惑。

史蒂芬·史密斯

在Angular pre v1.5中,双向绑定是常态,因此,如果您在组件中创建了子对象,则父对象会保留对它的引用,因此,如果您在父对象中更新了该对象,则会更新子对象,并且如果您更新了子对象中的对象,也更新了父对象。这会产生大量的开销,并且您会看到大量子组件保持与父组件的双向绑定的显着性能影响,例如,一个父容器组件加载乘客数据列表并为每个子容器显示一个子组件具有该乘客特定属性的乘客。父母被监视变化,每个孩子被监视变化,并且不断对其进行重新评估。

Angular1.5中引入了一种数据绑定方式,但这是Angular2性能提升的重要组成部分。数据从父级流到子级,但并非相反。如果父级数据发生更改,则这些更改将被下推到子级,但是如果子级发生更改,则这些更改将不会自动神奇地传播回父级。通过将事件更改后的数据显式发送回父级,并指示父级更新已更改的特定数据,可以管理从子级到父级的更新。数据流接管的一种方式是,父级使用更新的数据适当地更新子级。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数据流的特性/用途是什么

React中的单向数据流

React JS单向数据流混乱

从流数据流访问Bigtable的最佳实践是什么

Angular 2数据流和Flux之间的关键区别是什么?

运动数据流中的碎片是什么

:ms-properties备用数据流的内容是什么?

套接字在Flux单向数据流中的合适位置?

关于 HTTP 请求数据流的困惑 - HTTP 是什么部分,JSON 是什么?

在Flynn分类法中,“指令流”和“数据流”是什么意思?

将tcp上的数据流存储到大型阵列中的最佳方法是什么?

在Apache Spark中“循环数据流”是什么意思?

JPEG中压缩扫描数据流的结构是什么,是字节对齐的吗?

hadoop和mahout中正确的数据流应该是什么?

使用ReactJS中的逆向数据流,让孩子与父母进行交流的好方法是什么?

在Angular中创建数据流

Angular 组件之间的数据流问题

将数据流传输到Bigquery与将数据上传到PubSub,然后使用数据流将数据插入到Bigquery之间的优缺点是什么

助焊剂-无限滚动:我想不起来如何坚持单向数据流

对于Mac上的高带宽数据流,最有效的进程间通信方法是什么?

如果任务之间的数据流很大,利用dask多处理调度程序的最有效方法是什么?

在数据流工作中未达到目标工作人员的后果是什么?

Azure数据流

数据流问题

反应数据流

为什么数据流步骤无法启动?

为什么数据流使用额外的磁盘?

为什么Apache Flink从数据流中删除事件?

TPL数据流:为什么以下阻止?