Angular的单向数据流使用详解

这次给大家带来Angular的单向数据流使用详解,使用Angular单向数据流的注意事项有哪些,下面就是实战案例,一起来看一下。

变更检测

Angular 中,数据是由顶部根节点流向最后的叶子节点,整个数据流是单向,构成一颗单向树。

Angular的单向数据流使用详解

Angular 认为所有的异步操作都有可能会引起模型的变化,引起数据模型发生变化的事件源有:

Events:click, mouseover, keyup …

Timers:setInterval、setTimeout

XHRs:Ajax(GET、POST …)

Angular 封装 Zone来拦截跟踪异步,一旦发现异步行为,Angular 就会进行变更检测。

因为数据流是单向的,组件的数据来源只能由父组件进行传入,所以 Angular 会从上到下,广度遍历检测组件,只要父组件检测完毕就能继续检测子组件。而相比 angularjs,双向、混乱的数据流方向,会导致重复变更检测重复多次,直到数据稳定,可能会导致性能问题,或者出现数据和视图处于不一致的状态,即渲染过程完成后的视图不能反映数据的实际状态。

渲染输出

当检测到数据模型变化时,组件需要重新渲染,Angular将运行它的 DOM 生成函数,该函数会生成一个新的 DOM数据结构,该结构对应于组件 View 的新版本。

Angular 在渲染过程中,评估模板表达式并在整个组件树中调用生命周期钩子。

注意:绿色标志会多次调用

Angular的单向数据流使用详解

从生命调用周期来看(绿色有向线),ngAfterViewChecked 标示该组件及子组件视图输出完成。看以下一例子:

import {Component, AfterViewChecked} from '@angular/core';import {Course} from "./course";@Component({ selector: 'app-root', template: ` 

{{course.description}}

`})export class AppComponent implements AfterViewChecked { course: Course = { id: 1, description: "Angular For Beginners" }; ngAfterViewChecked() { this.course.description += Math.random(); }}

登录后复制

上述代码会在Angular变更检测周期发生错误。组件已经完成 DOM 数据结构输出,我们还在该组件 ngAfterViewChecked() 方法中修改了数据状态。这样导致了视图渲染后,数据跟视图状态不一致。

数据从组件类流向表示它们的DOM数据结构,生成这些DOM数据结构的行为本身就不会导致数据的进一步修改。但我们在 ngAfterView 生命周期发生修改数据行为,Angular 的“单向数据流”规则禁止在一个视图已经被组合好之后再更新视图。
这意味着数据模型到视图过程是单向,不可在视图后发生数据流发生改变。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

Vue怎么使用CDN优化首屏加载的速度

vue怎样优化首屏加载时间

Vue.js的基础知识点总结

以上就是Angular的单向数据流使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2774475.html

(0)
上一篇 2025年3月8日 14:07:24
下一篇 2025年3月8日 14:07:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • jQuery可见性过滤器的用法详解

    这次给大家带来jQuery可见性过滤器的用法详解,使用jQuery可见性过滤器的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了jQuery中可见性过滤器简单用法。分享给大家供大家参考,具体如下: 一 介绍 元素的可见状态有…

    2025年3月8日
    200
  • js的存储键值使用详解

    这次给大家带来js的存储键值使用详解,使用js的存储键值注意事项有哪些,下面就是实战案例,一起来看一下。 前端有时候需要存储键值对,需要主要的一点是键必须为字符串,重要的再次说明,键需要为字符串。 重点内容 菜鸟教程(runoob.com)…

    编程技术 2025年3月8日
    200
  • angular怎么实现共享服务在多个组件中数据通信

    这次给大家带来angular怎么实现共享服务在多个组件中数据通信,angular实现共享服务在多个组件中数据通信的注意事项有哪些,下面就是实战案例,一起来看一下。 应用场景,不同组件中操作统一组数据,不论哪个组件对数据进行了操作,其他组件中…

    2025年3月8日
    200
  • Angular4的router使用详解

    这次给大家带来Angular4的router使用详解,Angular4的router使用注意事项有哪些,下面就是实战案例,一起来看一下。 router,也就是路由,是前端中一个比较重要的概念。通过router把特定的地址和对应的页面关联后分…

    2025年3月8日 编程技术
    200
  • Angular JQuery生成简单快递管理界面的代码分享

    本篇文章给大家分享的内容是Angular JQuery生成简单快递管理界面的代码分享,有着一定的参考价值,有需要的朋友可以参考一下 话不多说,直接上代码: nbsp;html>–按状态查询–已发货未发货id  商品名用户名手机号价…

    编程技术 2025年3月8日
    200
  • vue使用xe-utils函数库的步奏详解

    这次给大家带来vue使用xe-utils函数库的步奏详解,vue使用xe-utils函数库的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了vue使用xe-utils函数库的具体方法,分享给大家,具体如下: 安装完成后自动挂载在…

    编程技术 2025年3月8日
    200
  • JS的深浅拷贝使用步奏的详解

    这次给大家带来JS的深浅拷贝使用步奏详解,使用JS深浅拷贝的注意事项有哪些,下面就是实战案例,一起来看一下。 说到深浅拷贝,必须先提到的是JavaScript的数据类型,之前的一篇文章JavaScript基础心法——数据类型说的很清楚了,这…

    编程技术 2025年3月8日
    200
  • js数据类型的使用详解

    这次给大家带来js数据类型的使用详解,js数据类型使用的注意事项有哪些,下面就是实战案例,一起来看一下。 由于自己是野生程序员,在刚开始学习程序设计的时候没有在意内存这些基础知识,导致后来在提到“什么什么是存在栈中的,栈中只是存了一个引用”…

    编程技术 2025年3月8日
    200
  • vue项目打包上传到百度的BAE步奏详解

    这次给大家带来vue项目打包上传到百度的BAE步奏详解,vue项目打包上传到百度的BAE的上传有哪些,下面就是实战案例,一起来看一下。 经过两天的研究终于将VUE打包后的项目通过BAE发布到了网上。虽然接口方面还有一下问题但是自己还是很高兴…

    编程技术 2025年3月8日
    200
  • vue-dplayer实现hls播放的步奏详解

    这次给大家带来vue-dplayer实现hls播放的步奏详解,vue-dplayer实现hls播放的注意事项有哪些,下面就是实战案例,一起来看一下。 起因 之前写了一篇《 vue2.0+vue-video-player实现hls播放》,里边…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论