使用Swiper 遇到的坑

前言

简单记录一下自己在项目中引入Swiper遇到的坑,也算是长个见识

话不多说,接下来准备面对疾风

最近有个轮播图的需求,个人比较懒,就直接引用Swiper,之前没有用过这个库,所以有些坑没办法避免

第一波疾风

查阅了官方文档
www.swiper.com.cn
通过npm进行安装

npm i swiper

!!!这直接导致我安装了最新版本Swiper6

main.js配置

import ‘swiper/swiper-bundle.css’

我是跟着文档一步步配置的 所有准备工作完成之后就开始写demo了
HTML部分

<template>
  <div class="homecontainer _homecontainer">
    <swiper ref="mySwiper" :options="swiperOptions">
      <swiper-slide>I'm Slide 1</swiper-slide>
      <swiper-slide>I'm Slide 2 </swiper-slide>
      <swiper-slide>I'm Slide 3</swiper-slide>
      <swiper-slide>I'm Slide 4</swiper-slide>       
    </swiper>
  </div>
</template>
复制代码

JS部分

export default {
  data() {
    return {
      swiperOptions: {
        slidesPerView: 4, // 显示个数
        direction: 'vertical',
        pagination: {
          el: '.swiper-pagination'
        }
      }
    }
  },
  computed: {
    swiper() {
      return this.$refs.mySwiper.swiper
    }
  },
  mounted() {
  },
  methods: {
    onSwiper(swiper) {
      console.log(swiper)
    },
    onSlideChange() {
      console.log('slide change')
    }
  }
}
复制代码

好家伙,我直呼好家伙,写完之后轮播图不能动。只能怪我太天真的,
控制台报错

TypeError: Cannot read property ‘slideTo‘ of undefined“

打开控制台查看$refs里面的东西发现找不到swiper 这期间也百度了一些方法,不知道为什么别人的是加了$swiper之后不可以,删掉$之后运行正常。而我这个只有加$才可以显示
return this.$refs.mySwiper.swiper
修改为
return this.$refs.mySwiper.$swiper
修改之后就能正常显示。当修复完这个问题的时候,我天真的以为可以用了。结果第二波疾风来了

第二波疾风

第二波疾风 就是我这个轮播图不能动!!!不能动我要你何用,心态直接炸裂,借用别人的demo进行观摩学习一下
html代码

<template>
  <div class="homecontainer _homecontainer">
    <swiper :options="swiperOption" ref="mySwiper">
      <!-- slides -->
      <swiper-slide>I'm Slide 1</swiper-slide>
      <swiper-slide>I'm Slide 2</swiper-slide>
      <swiper-slide>I'm Slide 3</swiper-slide>
      <swiper-slide>I'm Slide 4</swiper-slide>
      <!-- Optional controls -->
      <div class="swiper-pagination" slot="pagination" />
      <!-- <div class="swiper-pagination" slot="“pagination”/"> -->
      <!-- <div class="swiper-button-prev" slot="button-prev" />
      <div class="swiper-button-next" slot="button-next" /> -->
      <!-- <div class="swiper-scrollbar" slot="scrollbar" /> -->
    </swiper>
  </div>
</template>
复制代码

JS代码

export default {
  data() {
    return {
      swiperOption: {
        notNextTick: true,
        // swiper configs 所有的配置同swiper官方api配置
        //* 初始化自动播放
        observer: true, // 修改swiper自己或子元素时,自动初始化swiper
        observeParents: true, // 修改swiper的父元素时,自动初始化swiper
        //* 自动播放
        autoplay: {
          delay: 3000,
          disableOnInteraction: false
        },
        direction: 'vertical',
        grabCursor: true,
        setWrapperSize: true,
        autoHeight: true,
        pagination: {
          el: '.swiper-pagination',
          clickable: true },
        paginationClickable: true,
        //* 左右按钮
        // prevButton: '.swiper-button-prev',
        // nextButton: '.swiper-button-next',
        // scrollbar: '.swiper-scrollbar',//*滚动条
        mousewheelControl: true,
        // if you need use plugins in the swiper, you can config in here like this
        // 如果自行设计了插件,那么插件的一些配置相关参数,也应该出现在这个对象中,如下debugger
        debugger: true,
        // swiper callbacks
        // swiper的各种回调函数也可以出现在这个对象中,和swiper官方一样
        onTransitionStart(swiper) {
          console.log(swiper)
        }
      }
    }
  },
  computed: {
    swiper() {
      return this.$refs.mySwiper.$swiper
    }
  },
  mounted() {
    // console.log('this is current swiper instance object', this.swiper)
    this.swiper.slideTo(3, 1000, false)
  },
  methods: {
    onSwiper(swiper) {
      console.log(swiper)
    },
    onSlideChange() {
      console.log('slide change')
    }
  }
}
复制代码

这次是分页器不显示 上网查了一下感谢大佬分享经验

blog.csdn.net/weixin_4211…

根据大佬分享来看是swiper版本问题 我又重新安装了一遍swpier这次换成5.4.5版本

yarn remove swiper
yarn add swiper@5.4.5

同时main.js中配置项也需要更改

import Swiper from ‘swiper’ // ES引入方式
import ‘swiper/css/swiper.min.css’ // 根据实际路径和文件修改

完美解决 未更改前自己在网页上查看确实和大佬所说一样

<div class="swiper-pagination"></div>

里面一个子元素都没有换了版本之后就可以看到

3610e7fda57392697182251301cba09.png

总结

这次只是做个记录,没事的时候看一下,同样的问题不能再犯了。其实只要细心耐心的看文档这些都是可以避免的,我就是时间太赶,着急去用,就导致各种各样的问题都出现了。还是要耐下心看文档啊 虽然最后是通过改版本修复的问题,但还是想了解一下,到底是什么原因导致分页器不显示,还望经验的大佬贡献智慧哈哈哈

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享