vue2中使用swiper动态遍历数据时出现不轮播的情况

Vue2项目中使用Swiper5出现BUG

前言:我们再开发项目时,难免会用到一些炫酷的轮播图,目前提供较好功能并且多端兼容的就有Swiper,版本目前是4-6,常用的是swiper5,swiper是刚刚出来的最新版本(附上Swiper官网),我这里是使用5版本遇到的动态数据后不轮播的bug

1. 去Swiper找到自己想要的配置项

  • 根据自己项目需求找配置项
    swiper配置项

2. 这是我需要的swiper配置(修改bug之前)

  • 提前下载npm install swiper
  • data中的bannerurl是要提前从后端获取数据
<template>
   <div class="swiper-container banner_container">
        <div class="swiper-wrapper">
       
          <div
            class="swiper-slide swiper-no-swiping"
            v-for="bannerurl in pgBanner"
            :key="bannerurl.bannerUrl"
            :style="{'background-image': 'url(' + bannerurl.bannerUrl + ')'}"
          ></div>
        </div>
        <!-- 如果需要分页器 -->
        <div class="swiper-pagination"></div>
        <div class="banner_content">
          <h3 class="banner_tit">
            携手
            <br />生活与学习
          </h3>
          <p class="banner_txt">营造趣味学习生态</p>
          <nuxt-link to="/member">
            <i class="iconfont icon">&#xe657;</i>
          </nuxt-link>
        </div>
   </div>
</template>
<script>
import Swiper from "swiper";
export default {
  data() {
    return {
      //动态获取轮播图的数据源
      bannerurl:""
    };
  },
    created() {
    this.initSwiperBan();
  },
  methods: {
  //初始化swiper组件
    initSwiperBan() {
      var mySwiper = new Swiper(".banner_container", {
        //切换效果
        effect: "fade",
        //禁止滑动
        noSwiping: true,
        autoplay: {
          delay: 3000,
          //用户操作后是否被禁掉
          disableOnInteraction: false
        },
        // 如果需要分页器
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
          bulletClass: "my-bullet", //需设置.my-bullet样式
          bulletActiveClass: "my-bullet-active"
        }
      });
    },
}
}
</script>
  • 到这里将会出现一个bug,就是轮播图不轮播了

3. 修改之后

  • 我们得在加一个observer属性,动态检查器
    observer
<template>
   <div class="swiper-container banner_container">
        <div class="swiper-wrapper">
       
          <div
            class="swiper-slide swiper-no-swiping"
            v-for="bannerurl in pgBanner"
            :key="bannerurl.bannerUrl"
            :style="{'background-image': 'url(' + bannerurl.bannerUrl + ')'}"
          ></div>
        </div>
        <!-- 如果需要分页器 -->
        <div class="swiper-pagination"></div>
        <div class="banner_content">
          <h3 class="banner_tit">
            携手
            <br />生活与学习
          </h3>
          <p class="banner_txt">营造趣味学习生态</p>
          <nuxt-link to="/member">
            <i class="iconfont icon">&#xe657;</i>
          </nuxt-link>
        </div>
   </div>
</template>
<script>
import Swiper from "swiper";
export default {
  data() {
    return {
      //动态获取轮播图的数据源
      bannerurl:""
    };
  },
    created() {
    this.initSwiperBan();
  },
  methods: {
  //初始化swiper组件
    initSwiperBan() {
    var mySwiper = new Swiper(".banner_container", {
        //切换效果
        effect: "fade",
        //禁止滑动
        noSwiping: true,
       //启动动态检查器,当改变swiper的样式(例如隐藏/显示)或者修改swiper的子元素时,自动初始化swiper
        observer:true,
        autoplay: {
          delay: 3000,
          //用户操作后是否被禁掉
          disableOnInteraction: false
        },
        // 如果需要分页器
        pagination: {
          el: ".swiper-pagination",
          clickable: true,
          bulletClass: "my-bullet", //需设置.my-bullet样式
          bulletActiveClass: "my-bullet-active"
        }
      });
    },
}
}
</script>

到这已经结束了~感谢三连

更多推荐:wantLG的《普歌-码上鸿鹄:Vue错误[Vue warn]: Invalid prop: type check failed for prop “data”. Expected Array, got String


  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wantLG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值