
文章有点长,耐心看完
vue项目中使用轮播图效果:
使用swiper动态加载数据,动态轮播数据显示为空。在网上看了很多都是说
保证在数据请求之后再渲染页面,意思也就是说数据还没有请求成功就开始渲染页面,导致没有数据,
顺序是:先请求数据在渲染页面
然后我就把轮播图的方法写到了调用数据成功之后,数据返回成功之后,执行轮播图
…
但是还是没有什么效果
this.$nextTick()
介绍this.$nextTick()没错,我就在调用轮播图方法的时候加了个 this.$nextTick() ,然后就好了,不会出现没有数据的那种情况了
官方给的解释:
将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。
…难以理解…
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app" @click="handleClick" ref="test">{{message}}</div>
</body>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'aaa'
},
methods: {
handleClick() {
this.message = 'bbb'
console.log(this.$refs.test.innerText)
this.$nextTick(function () {
console.log(this.$refs.test.innerText)
})
}
}
})
</script>
</html>
绑定了一个点击事件,触发点击事件时,打印的值又是什么??? OK,通过控制得到结果是:
aaa
bbb
为什么已经改变了message的值,而我的输出还是aaa呢?
通过以上例子,大概明白this.nextTick是怎么用的了,但是其中背后的原理是什么呢。这是因为:
可以看下这篇文章:
https://blog.csdn.net/qq_44552416/article/details/107952313?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EOPENSEARCH%7Edefault-1.no_search_link
懂了撒?
点个赞撒?!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)