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 的“单向数据流”规则禁止在一个视图已经被组合好之后再更新视图。
这意味着数据模型到视图过程是单向,不可在视图后发生数据流发生改变。

总结

从变更检测过程以及渲染输出过程中,可以总结出:

单向数据流指的是从组件树的顶部到底部渲染扫描过程中应用程序数据流转到由渲染过程生成的输出DOM数据结构的流程。

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

推荐阅读:

vue实现减少对服务器请求次数

使用JSON提交数据到服务端步奏详解

vue怎样使用缓存

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

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

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

(0)
上一篇 2025年3月8日 12:27:30
下一篇 2025年3月8日 12:27:36

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

相关推荐

  • jQuery的复合选择器使用详解

    这次给大家带来jQuery的复合选择器使用详解,jQuery的复合选择器使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一 介绍 复合选择器将多个选择器(可以是ID选择器、元素选择或是类名选择器)组合在一起,两个选择器之间以逗号“,…

    2025年3月8日
    200
  • diff算法使用详解

    这次给大家带来diff算法使用详解,diff算法使用的注意事项有哪些,下面就是实战案例,一起来看一下。 z虚拟dom diff算法首先要明确一个概念就是diff的对象是虚拟dom,更新真实dom则是diff算法的结果 Vnode基类 con…

    编程技术 2025年3月8日
    200
  • vue全局局部组件使用详解

    这次给大家带来vue全局局部组件使用详解,vue全局局部组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。 —main.js文件 **main.js入口文件的内容**import Vue from ‘vue’import App f…

    编程技术 2025年3月8日
    200
  • Angular实现服务端渲染案列详解

    这次给大家带来Angular实现服务端渲染案列详解,Angular实现服务端渲染的注意事项有哪些,下面就是实战案例,一起来看一下。 Angular在服务端渲染方面提供一套前后端同构解决方案,它就是Angular Universal(统一平台…

    2025年3月8日 编程技术
    200
  • Koa2实现文件上传步奏详解

    这次给大家带来Koa2实现文件上传步奏详解,Koa2实现文件上传步奏详解的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 上传下载在 web 应用中还是比较常见的,无论是图片还是其他文件等。在 Koa 中,有很多中间件可以帮助我们快…

    编程技术 2025年3月8日
    200
  • JS调试使用详解

    这次给大家带来JS调试使用详解,JS调试的注意事项有哪些,下面就是实战案例,一起来看一下。 试想一下:出现了某个bug,有人用几分钟就搞定了,有人用了半天或者一天都找不到原因所在。你愿意当前者还是后者呢?想当前者的就请好好看完本篇文章吧。文…

    2025年3月8日 编程技术
    200
  • js注入使用详解

    这次给大家带来js注入使用详解,js注入使用的注意事项有哪些,下面就是实战案例,一起来看一下。 最近刚出了新闻,阿里四名网络安全部门员工利用网页漏洞写js脚本抢月饼,于是兴致来了,想了解一下这个js脚本到底怎么写,各种刷单各种抢枪抢又是怎么…

    编程技术 2025年3月8日
    200
  • js内置方法和对象使用详解

    这次给大家带来js内置方法和对象使用详解,js内置方法和对象使用的注意事项有哪些,下面就是实战案例,一起来看一下。 JS内置函数不从属于任何对象,在JS语句的任何地方都可以直接使用这些函数。JS中常用的内置函数如下: 1、eval(str)…

    编程技术 2025年3月8日
    200
  • jQuery中for循环var与let使用详解

    这次给大家带来jQuery中for循环var与let使用详解,jQuery中for循环var与let使用的注意事项有哪些,下面就是实战案例,一起来看一下。 今天在写jQuery请求接口中发现一个问题:       在用AJAX发送请求中又嵌…

    编程技术 2025年3月8日
    200
  • jQuery框架使用详解

    这次给大家带来jQuery框架使用详解,jQuery框架使用的注意事项有哪些,下面就是实战案例,一起来看一下。 下面将使用简化的代码来介绍,主要关注jQuery的实现思想~>_ //匿名立即执行函数//.防止污染全局空间//.选择性保…

    2025年3月8日
    200

发表回复

登录后才能评论