使用 watch+$nextTick 解决Vue引入组件无法使用问题

问题描述:

很多时候我们都需要使用第三方组件库,比如Element-UI,Swiper 等等。

如果我们想要在这些结构中传入自己从服务器请求中获取的数据就会出现无法显示的问题。

比如我们在下面的Swiper例子中,我们需要new Swiper 才能让这个这个轮播图运行起来。

这里的bannerImgs是我们从服务器中请求返回的数据。

我们在new Swiper对象的时候必须要保证DOM元素是完整的。

但是我们的Swiper组件并不能使用,这是为什么?

因为向服务器发送请求是异步任务,而我们在mounted中的new Swiper 是同步任务。

也就是说,在new Swiper的时候,数据还没从服务器返回回来new Swiper操作就已经执行完了!

解决方法:

我们可以使用watch 加上 $nextTick 的方案来解决这个问题。

如果对于watch和$nextTick有疑问的可以看这两篇文章:

Vue中的监视属性_vue监视属性_永久旅途的博客-CSDN博客

[Vue nextTick-CSDN博客](https://blog.csdn.net/XunLin233/article/details/134093371 "Vue nextTick-CSDN博客")

因为我们要保证DOM节点完整的时候才能new Swiper对象。

什么情况下DOM结构才完整?

  1. 从服务器请求的数据已经回来了。

  2. DOM已经放到页面上了。

所以我们就可以使用watch 来监视是否改变从而达到判断数据是否已经请求回来了,使用$nextTick 等到DOM已经放到页面上后再执行new Swiper。

相关推荐
鱼鱼块10 分钟前
《最小栈的巧妙设计:用辅助栈实现 O(1) 获取最小值》
javascript·算法·面试
San3011 分钟前
反转字符串与两数之和:两道简单题背后的 JavaScript 思维深度
javascript·算法·面试
孟祥_成都12 分钟前
前端角度学 AI - 15 分钟入门 Python
前端·人工智能
掘金安东尼13 分钟前
Astro 十一月更新:新特性与生态亮点(2025)
前端
拉不动的猪14 分钟前
判断dom元素是否在可视区域的常规方式
前端·javascript·面试
Hilaku33 分钟前
如何用隐形字符给公司内部文档加盲水印?(抓内鬼神器🤣)
前端·javascript·面试
guxuehua37 分钟前
Monorepo Beta 版本发布问题排查与解决方案
前端
猫头虎-前端技术37 分钟前
小白也能做AI产品?我用 MateChat 给学生做了一个会“拍照解题 + 分步教学”的AI智能老师
前端·javascript·vue.js·前端框架·ecmascript·devui·matechat
b***666138 分钟前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
栀秋66639 分钟前
ES6+新增语法特性:重塑JavaScript的开发范式
前端·javascript