在vue中数据向视图上进行更新的操作,是异步的

异步的就意味着,在代码中更改完数据之后,直接去访问页面中的元素中的内容,还是老数据

那么如何去解决这个问题呢?

vue中提供了$nextTick方法:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>Document</title></head><body><div id="app"><div id="box">{{ msg }}</div><button @click="btnChangeMsg">改数据</button></div><script src="./node_modules/vue/dist/vue.js"></script><script>const vm = new Vue({el: "#app",data: {msg: "Hello World"},methods: {btnChangeMsg() {// 在vue中数据向视图上进行更新的操作,是异步的this.msg = "Hello LYH";// 异步的就意味着,在代码中更改完数据之后,直接去访问页面中的元素中的内容,还是老数据// console.log(document.getElementById("box").innerHTML);打印出来还是老数据// $nextTick回调函数,能够确保我们获取到的页面中的内容,都是最新的!this.$nextTick(function() {console.log("这个函数,会在Vue将数据更新到视图之后,执行");console.log(document.getElementById("box").innerHTML);});}}});</script></body>
</html>

vue中数据是在data里面还是在vue的实例里面?

我们是将数据放在参数对象中的data属性中传递给Vue构造函数的

Vue构造函数在接收到这个参数后

1. 会读取data属性中所有的数据,通过Object.defineProperty方法,将这些数据全部加到vue实例上

1.1 这样做,可以让属性有了set和get方法,可以实现双向绑定等等功能

1.2 这样做,可以让程序员直接通过this来访问数据,方便使用

2. Vue还会读取所有methods中的函数,把所有的函数,全部加给vue实例

可以直接通过this来访问这些函数

vue中数据异步更新($nextTick)的问题相关推荐

  1. 如何理解vue中 同步异步

    如何理解vue中 同步异步 同步异步 , 举个例子来说,一家餐厅吧来了5个客人,同步的意思就是说,来第一个点菜,点了个鱼,好, 厨师去捉鱼杀鱼,过了半小时鱼好了给第一位客人,开始下位一位客人,就这样一 ...

  2. vue中数据劫持代理

    1.vue中的数据劫持代理指的是开发者调用或修改组件data里的某个属性时可以直接使用this.属性名,而不用写成this.data.属性名 2.实现原理主要就是用到了Object.definePro ...

  3. 关于vue中next和Tick(nextTick)的一点理解

    前言 在这之前我是没有怎么看过vue源码的,但是看了源码后又产生了一些疑问,如果不看源码我还真没有任何疑问的去用nextTick,因为我只知道我想获取更新后的dom我就在里面写回调,只管写准没错,有天 ...

  4. Vue响应式原理Vue中数据的监听

    文章目录 Observer理解如上图 Dep「依赖管理」 Watcher理解如上图 总结:Vue响应式原理的核心就是Observer.Dep.Watcher. Vue响应式原理理解以后就知道Vue是怎 ...

  5. vue 中实现异步加载模块

    前提:使用vue官方脚手架搭建(webpack) 使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build  会将所有的js代码打包为一个整体,这样打包使单页面的应用的体积比 ...

  6. 视图之二--视图中数据的更新

    视图不是表,视图里面的数据是通过sql语句去表中查询得到的.当表中的数据发送更改之后,视图里的数据也会发生相应的更改.所以我么一般有两种方式更新视图里面的数据:一是更新表中的数据,从而间接地更新视图中 ...

  7. vue中数据之间的传递用propos

    子集 父集 以上是子父集互相传递数据. 传参数的时候是以对象的形式展示的,封装在propos中的. 如果默认值是string或者number类型,那么可以用default表示. 如果默认值是objec ...

  8. vue中this.$nextTick()使用解析

    原理 vue中数据和dom渲染由于是异步的,所以要让dom结构随数据改变这样的操作都应该放进this.$nextTick()的回调函数中. this.$nextTick 作用是可以将回调延迟到下次DO ...

  9. Vue学习:Vue中的数据代理

    一.回顾Object.defineProperty Object.defineProperty方法可以用来增加和修改对象的属性,该方法有三个参数: 1.属性所在的对象: 2.属性的名字: 3.一个描述 ...

最新文章

  1. sqlite库——c语言实现匹配已知字符串中某个字段(该字段在其他表中),在其他表中获取值并显示
  2. mysql连接优先级设置_MySQL的按优先级等效连接
  3. 什么是流量劫持,如何防止流量劫持?
  4. Java 中的四种引用及垃圾回收策略
  5. ecshop在PHP 5.4以上版本各种错误问题处理
  6. 算术运算符_加号的多种用法
  7. 计算机测试怎么提交,Win7电脑怎么测试上传速度?
  8. php留言板实现留言评价,PHP实现留言板功能的思路
  9. C++提高部分_C++类模板对象做函数参数---C++语言工作笔记090
  10. js控制iframe高度自动撑开
  11. local class incompatible: stream classdesc serialVersionUID = 61,local class serialVersionUID = 1
  12. hdu 6070 Dirt Ratio —— 二分+线段树
  13. 高盛报告引科技股暴跌 但如今并非 互联网泡沫2.0
  14. 2020年高手都爱用的10种插画风格,全都在这了!
  15. Spring源码分析之推断构造方法(一)
  16. 二维数组作为参数传递
  17. 使用vs建立web网站及IIS
  18. html输入框密码颜色,css解决浏览器输入框记住账号密码后的背景色
  19. 2019 下半年 Flutter 实现的性能优化 | 英雄榜
  20. 操作系统 吃水果放水果问题 PV操作

热门文章

  1. 【面试题】104道 CSS 面试题,助你查漏补缺(下)
  2. JS获取系统和浏览器信息
  3. Mol Plant | 中科院昆植所吴建强团队解析列当科寄生植物的基因组演化历史
  4. Emgucv FloodFill 在c#调用方法,把默认黑底图变白色
  5. matlab实现ROC曲线
  6. 在网页加载完毕时自动触发某个按钮的点击事件
  7. 自定义注解利用反射记录日志
  8. 解决后台时间数据正确,但传到前端显示与后台相差8个小时问题
  9. web前端入职配置_我如何从全职妈妈变成前端Web开发人员
  10. Python实现反转链表