返回顶部
首页 > 资讯 > 精选 >vue的异步数据更新机制与$nextTick使用方法是什么
  • 898
分享到

vue的异步数据更新机制与$nextTick使用方法是什么

2023-07-05 17:07:20 898人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Vue的异步数据更新机制与$nextTick使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的异步数据更新机制与$nextTick使用方法是什么”吧!v

这篇文章主要讲解了“Vue的异步数据更新机制与$nextTick使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的异步数据更新机制与$nextTick使用方法是什么”吧!

    vue异步数据更新机制与$nextTick

    vue异步更新dom

    vue的响应式更新dom是异步执行的,不是数据发生变化之后dom立即发生变化,而是按照一定的逻辑更新dom。

    具体是vue在检测到数据变化时,vue将开启一个队列,,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这在缓冲中去除重复数据造成的额外的dom操作和计算是非常必要的。在下一个nextTick中,vue执行的是已经去重的实际工作。

    理解:vue执行dom更新时异步的,这个异步任务可以当成是一个promise的微任务,对同一个属性值进行多次赋值时,只有最后一次赋值会作为一个promise微任务放到更新队列里面。

    $nextTick执行机制

    Vue会异步更新DOM,会在当前执行栈的最后更新DOM,这个与javascript的原生操作dom有很大区别。vue中的$nextTick再JavaScript中相当于微任务,会在当前所有同步任务执行完之后再执行,$nextTick会得到dom更新后的结果。最后页面渲染是在始终是在微任务执行之后在执行的,所以$nextTick回调执行时还没有渲染,页面上看不到更新后的结果。

    vue执行异步更新的目的

    vue更新dom的流程:触发setter --> 监听watcher --> 重新渲染 render --> 生成虚拟dom (vdom)--> 更新dom 。如果每一次都执行该流程会非常消耗性能,所以使用异步更新DOM的机制,先对数据修改进行整合去重,再使用最终的结果一次性对DOM进行更新。

    vue异步数据更新问题

    记录一下出现的问题, 数据翻倍

    这是复现问题的代码

     data() {    return {      space: "",      allresult: []    };  },  methods: {    getmessage() {      this.allresult = [];      axiOS        .get(          "https://GISt.GitHubusercontent.com/xiaolannuoyi/9b0defe4959e71fa97e6096cc4f82ba4/raw/4be939123D488cee7ecefc055fb5ecb2ed8d5c8d/test"        )        .then(data => {          console.log(data);          let result = data.data;          for (let i = 0; i < result.length; i++) {            //原因在于这里的this.Allresult            this.allresult.push({              id: result[i].id,              name: result[i].name,              age: result[i].age            });                      }            console.log('此时的this.allresult',this.allresult);        });    }  },  watch: {    space() {      console.log("watch");      this.getmessage();    }  },  mounted() {    this.space = "123";    console.log("mounted");    this.getmessage();  }

    结果

    vue的异步数据更新机制与$nextTick使用方法是什么

    此时你可以看到第二次的数据时 是 第一次的 2倍

    原因

    mounted 和 watch 都执行 getmessage 方法,虽然方法之前 对数据进行了清空,但是 异步请求执行的慢,

    所以两次调用getmessage相当于 this.allresult = []; this.allresult = []; axios...;axios....: 这个顺序

    所以才会出现上述现象

    解决

    修改this.allresult = []的位置

    vue的异步数据更新机制与$nextTick使用方法是什么

    新建一个临时空数组

    vue的异步数据更新机制与$nextTick使用方法是什么

    感谢各位的阅读,以上就是“vue的异步数据更新机制与$nextTick使用方法是什么”的内容了,经过本文的学习后,相信大家对vue的异步数据更新机制与$nextTick使用方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: vue的异步数据更新机制与$nextTick使用方法是什么

    本文链接: https://lsjlt.com/news/353682.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • vue的异步数据更新机制与$nextTick使用方法是什么
      这篇文章主要讲解了“vue的异步数据更新机制与$nextTick使用方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue的异步数据更新机制与$nextTick使用方法是什么”吧!v...
      99+
      2023-07-05
    • Vue异步更新机制及$nextTick原理是什么
      本文小编为大家详细介绍“Vue异步更新机制及$nextTick原理是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue异步更新机制及$nextTick原理是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
      99+
      2023-06-30
    • Vue异步更新机制和nextTick的原理是什么
      本篇内容介绍了“Vue异步更新机制和nextTick的原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
      99+
      2024-04-02
    • Vue3组件异步更新和nextTick运行机制是什么
      这篇文章主要讲解了“Vue3组件异步更新和nextTick运行机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3组件异步更新和nextTick运行机制是什么”吧!组件的异步更新...
      99+
      2023-07-06
    • Vue异步更新机制及$nextTick原理的深入讲解
      目录前言Vue的异步更新DOM更新是异步的DOM更新还是批量的事件循环执行过程源码深入异步更新队列nextTick$nextTick总结一般更新DOM是同步的既然更新DOM是个同步的...
      99+
      2024-04-02
    • Vue 中异步更新的原理是什么
      今天就跟大家聊聊有关Vue 中异步更新的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Vue 异步更新 DOM 原理很多同学都知道,Vue...
      99+
      2024-04-02
    • datagridview更新数据的方法是什么
      DataGridView更新数据的方法有多种,可以通过以下几种方式来实现:1. 使用数据绑定:可以通过绑定DataGridView的...
      99+
      2023-10-10
      datagridview
    • hbase更新数据的方法是什么
      HBase更新数据的方法通常是通过Put对象来实现。Put对象可以用于在HBase表中插入新数据或更新已有数据。具体步骤如下: 创...
      99+
      2024-04-02
    • vue中异步数据获取方式是什么
      今天给大家介绍一下vue中异步数据获取方式是什么。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。vue中异步数据获取1、获取异步数据,通过async/await...
      99+
      2023-06-28
    • sqlserver更新表数据的方法是什么
      要更新表数据,可以使用SQL Server中的UPDATE语句。语法如下: UPDATE 表名 SET 列1 = 值1, 列2 = ...
      99+
      2024-04-12
      sqlserver
    • listview异步加载数据的方法是什么
      在Android中,可以使用以下方法实现ListView的异步加载数据:1. 使用AsyncTask类:AsyncTask类是一个抽...
      99+
      2023-09-26
      ListView
    • react异步请求数据的方法是什么
      在React中,常用的异步请求数据的方法有以下几种:1. 使用fetch API:fetch是现代浏览器提供的一种用于进行网络请求的...
      99+
      2023-08-19
      react
    • java批量更新数据的方法是什么
      在Java中,可以使用以下方法来批量更新数据:1. 使用JDBC批处理:通过JDBC的批处理功能,可以一次性将多条SQL语句发送到数...
      99+
      2023-09-11
      java
    • plsql批量更新数据的方法是什么
      在PL/SQL中,批量更新数据通常使用FORALL语句。FORALL语句允许一次性更新多行数据,从而提高了效率。具体方法如下:1. ...
      99+
      2023-10-12
      plsql
    • redis实现数据更新的方法是什么
      在Redis中实现数据更新的方法主要有以下几种: 使用SET命令:通过SET命令可以设置指定key的值,如果该key已经存在,则会...
      99+
      2024-04-09
      redis
    • oracle关联更新数据的方法是什么
      在Oracle中,可以使用UPDATE语句和JOIN子句来实现关联更新数据的操作。具体的方法是在UPDATE语句中使用FRO...
      99+
      2024-04-09
      oracle
    • sqlsugar批量更新数据的方法是什么
      SQLSugar可以使用批量更新数据的方法是通过UpdateRange方法来实现。该方法可以接收一个包含多个实体的List集合作为参...
      99+
      2024-04-09
      sqlsugar
    • winform窗体异步加载数据的方法是什么
      WinForm窗体异步加载数据的方法有多种,以下是其中几种常用的方法:1. 使用BackgroundWorker组件:Backgro...
      99+
      2023-09-13
      winform
    • Java异步调用的方法是什么
      这篇文章主要讲解了“Java异步调用的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java异步调用的方法是什么”吧!一、创建线程@Testpublic void&nbs...
      99+
      2023-06-27
    • ubuntu中snap包安装、更新删除与使用的方法是什么
      这篇“ubuntu中snap包安装、更新删除与使用的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ubuntu中s...
      99+
      2023-07-04
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作