关于Vue异步请求数据,使用一些插件时实例化的时机分析

本文分析了在Vue中处理异步请求数据时,如何正确实例化Swiper和better-scroll插件。针对数据变化后Swiper功能紊乱的问题,提出了在updated钩子函数中初始化、使用延时器或黑魔法的方法。同时,讨论了如何通过props动态传参以实现组件复用。对于better-scroll,介绍了其作为移动端滚动解决方案的特点,并指出其使用时也可能遇到类似实例化问题。文章提供了问题解决思路和建议。
摘要由CSDN通过智能技术生成

关于Vue异步请求数据,使用插件时实例化的时机分析

一、首先,以Swiper为例

一般在vue组件中的data会设一个初始值,然而这时候可能进行了swiper的实例化,但在异步请求数据后数据发生变化,这个时候不能如我们想象的再次实例化。因此会出现swiper功能紊乱的现象。

解决办法:(根本原理是在数据返回后能够再次实例化)
1. 异步数据返回进行首次初始化
  • 延时器-此处引入延时器setTimeout(()=>{},time)的思想,不是作为主要解决手段,而是提供一种思路
  • updated更新阶段的钩子函数里面初始化
  • 黑魔法this.$nextTick(cb)-这个方法执行还在updated执行之后,所以说完全没有问题。注意:必须在数据更新之后,紧接着使用这个方法才有效。
 this.$axios(url[, data[, config]]).then(res => {
   
      this.data中的数据 = res.data;
      // 紧跟在数据更新之后,才能执行回调
      this.$nextTick(cb);//cb中可以进行swiper的实例化
 });
2. 封装Swiper组件,给swiper添加key值。利用diff算法,当异步数据返回,以这个数据的key必定变化,所以会重新渲染这个组件。
  • swiper组件(对swiper的两个参数都是props传递过来的)-目的:1.为了复用与周全;2.当用到多个swiper时class名都重复,配置要求不一样,如何实现复用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值