
vue this.$nextTick() 方法里面要包括异步操作,或者说有一点渲染延迟才能进行
watch: {
level(val, oldVal) {
this.mapShow = false;
console.log("消失了");
this.$nextTick(() => {
console.log("出现了");
this.mapShow = true;
this.getGeoDatav();
});
}
}
setTimeout(() => {
func()
}, 50);
这里就需要用到this.$nextTick(),这个函数可以做到数据更新之后等待Vue更新 DOM,DOM状态更新后进行一些操作,但是我们这里其实跳过了DOM更新这一步,我们直接修改的是data中的数据,看起来是跳过了view或者viewModel这一层,直接修改的是model层,但其实本质上Vue监测到的还是DOM的更新,从而更新数据。 那么其实说明:$nextTick()其实可以更加精确的表示为对virtualDOM的一种数据更新。
网友评论