QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

vue教程

vue中使用swiper各种问题集锦

 shitouadmin  2023-06-29 08:55:12
第一次使用vue引入swiper,肯定是要搜网上的使用教程:
(1)安装swiper
  1. npm install swiper -S 
(2)引入swiper
全局引入方式,即在main.js中引入
  1. import Vue from 'vue'
  2. import "swiper/swiper.min.css" 
在组件中引用:
  1. import Swiper from 'swiper'
  2. require("swiper/css/swiper.min.css"); 
(3)在需要使用swiper的组件中引入swiper ,swiper必须放到mounted里 否在无效
  1. new Swiper ('.swiper-container', { 
  2.     loop: true
  3.     // 如果需要分页器 
  4.     pagination: '.swiper-pagination'
  5.     // 如果需要前进后退按钮 
  6.     nextButton: '.swiper-button-next'
  7.     prevButton: '.swiper-button-prev'
  8.     // 如果需要滚动条 
  9.     scrollbar: '.swiper-scrollbar'
  10.   })         
以上是网上的基本操作,但是实际按照次流程走之后,虽然swiper可以显示,但是问题多多

问题1:左右按钮不能控制
因为npm install swiper -S默认安装的 最新版本,最新版本中的按钮写法是:
  1. // 设置点击箭头 
  2. navigation: { 
  3.           nextEl: ".swiper-button-next"
  4.           prevEl: ".swiper-button-prev"
  5.  }, 
问题2:明明已经安装了swiper,还是swiper组件不存在

那是因为swiper有很多个版本,并且每个版本的引入方式,css路径都不太一样
  1. @3.x 版本的 ---- 引入模块时使用小写 
  2. import { swiper, swiperSlide } from “swiper”; 
  3. @4.x 版本的 ---- 引入模块时使用大写 
  4. import { Swiper, SwiperSlide } from “swiper”; 
还有css的路径,有的是直接写,有的实在css目录下,要根据自己安装swiper的实际情况填写路径和引入方式
正确写法:
  1. import Swiper from "swiper"
  2. require("swiper/css/swiper.min.css"); 
问题3:vue-awesome-swiper是什么鬼?
vue-awesome-swiper是基于swiper的,安装不同版本的vue-awesome-swiper对应不同的swiper,所以swiper里面的属性多数能应用到vue-awesome-swiper中,也可以根据swiper文档来设置vue-awesome-swiper属性;swiper官方文档:https://www.swiper.com.cn/api/index2.html;
安装方式:
  1. npm install  vue-awesome-swiper 
我以为只需要安装这一个就行了,发现不行,他必须依赖swiper,并且对版本有一定要求,这就很操蛋了

问题4、vue动态渲染swiper,还是无法点击左右按钮?
这是因为我们一般都使用的axios请求的接口,这是异步加载的,可能会造成dom节点没有渲染完成,此时我们需要:
  1. that.$nextTick(()=>{ 
  2.     that.initSwiper(); //等节点渲染完成之后在初始化swiper
  3. });  
该方法可以写到mounted里边,也可以写到请求数据之后。同时
  1. swiper中的abserver方法,在启动状态下,当我们修改swiper的子元素时,会自动初始化swiper即observer:true
  2. 并该指令一般情况下搭配abserveParents:true,一起使用即当swiper的父元素变化时,会更新swiper 
  1. observer:true,//修改swiper自己或子元素时,自动初始化swiper 
  2. observerParents:true,//修改swiper的父元素时,自动初始化swiper 
这两个很重要

问题5:vue动态渲染swiper导致loop不生效的问题
和方法4解决方法类似,在获取完数据之后执行
  1. that.getBanner().then(res=>{ 
  2.     that.$nextTick(()=>{ 
  3.         that.initSwiper(); 
  4.     });  
  5. }); 
(注意:该方法是把getBanner方法改成同步方法,即加 async await,返回promise对象)
一个小小的swiper组件,碰到这么多问题,可真是头大

¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《vue中使用swiper各种问题集锦》发布于石头博客文章,作者:shitouadmin,如若转载,请注明出处:https://www.pweb123.com/frame/vue/967.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序