题目
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="app">
<div id="div">{{a}}</div>
<button @click="btn">btn</button>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
a: 1,
},
methods: {
btn() {
const div = document.getElementById('div')
this.a = 3
this.a = 2
this.$nextTick(() => {
console.log('nextTick', div.innerHTML)
})
console.log(div.innerHTML)
// const div = document.getElementById('div')
// this.$nextTick(() => {
// console.log('nextTick', div.innerHTML)
// })
// this.a = 2
// console.log(div.innerHTML)
},
},
})
</script>
</body>
</html>
首先看一下官网是怎么介绍nextTick的连接
在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
所以说这个方法就是在 数据改变后执行的
所以
const div = document.getElementById('div')
this.a = 3
this.a = 2
this.$nextTick(() => {
console.log('nextTick', div.innerHTML)
})
console.log(div.innerHTML)
所以这些都不对
看这里
https://mp.weixin.qq.com/s/Gaa7tDLR-YhmIuCbiBqjdg