在vue中使用swiper轮播图(搭配watch和$nextTick())

在组件中使用轮播图展示图片信息:

1.下载swiper,5版本为稳定版本

cnpm install swiper@5

2.在组件中引入swiper包和对应样式,若多组件使用swiper,可以把swiper引入到main.js入口文件中:

import 'swiper/css/swiper.css' //引入swiper样式

import Swiper from 'swiper'; //引入swiper

3.在组件中使用:

由于我的组件获取的图片信息由axios请求后端获得,所以要借助属性监听+$nextTick()共同实现轮播图:

html 复制代码
<template>
  <div class="list-container">
    <div class="sortList clearfix">
      <div class="center">
        <!--banner轮播-->
        <div class="swiper-container" ref="mySwiper">
          <div class="swiper-wrapper">
            <div
              class="swiper-slide"
              v-for="carousel in bannerList"
              :key="carousel.id"
            >
              <img :src="carousel.imgUrl" />
            </div>
          </div>
          <!-- 如果需要分页器 -->
          <div class="swiper-pagination"></div>

          <!-- 如果需要导航按钮 -->
          <div class="swiper-button-prev"></div>
          <div class="swiper-button-next"></div>
        </div>
      </div>
      </div>
    </div>
  </div>
</template>

<script>
  import {mapState} from 'vuex'
  import Swiper from 'swiper';
  export default {
    name: 'ListContainer',
    mounted(){
      //在vuex仓库中把轮播图和banner图片取出来
      this.$store.dispatch('BannerList')
    },
    computed:{
      ...mapState({
        bannerList:(state)=>state.home.bannerList
      })
    },
    watch:{
      bannerList:{
        handler(newValue,oldValue){
          this.$nextTick(()=>{
            var mySwiper=new Swiper(this.$refs.mySwiper,{
                //配置分页器内容
                loop: true, // 循环模式选项
                pagination:{
                    el:".swiper-pagination",//换页器与哪个标签关联
                    clickable:true//分页器是否可以点击
                },
                // 如果需要前进后退按钮
                navigation: {
                    nextEl: '.swiper-button-next',
                    prevEl: '.swiper-button-prev',
                },
                //如果需要滚动条
                scrollbar: {
                    el: '.swiper-scrollbar',
                },
          })
        })
      }
    }
    }
  }


</script>

<style lang="less" scoped>
</style>
相关推荐
军军君0112 分钟前
Three.js基础功能学习十五:智能黑板实现实例二
开发语言·前端·javascript·vue.js·3d·threejs·三维
IT枫斗者19 分钟前
构建具有执行功能的 AI Agent:基于工作记忆的任务规划与元认知监控架构
android·前端·vue.js·spring boot·后端·架构
hotlinhao20 分钟前
Nginx rewrite last 与 redirect 的区别——Vue history 模式短链接踩坑记录
前端·vue.js·nginx
ZC跨境爬虫23 分钟前
海南大学交友平台开发实战day7(实现核心匹配算法+解决JSON请求报错问题)
前端·python·算法·html·json
下北沢美食家26 分钟前
CSS面试题2
前端·css
weixin_4617694033 分钟前
npm create vue@latest 错误
前端·vue.js·npm
WindrunnerMax34 分钟前
从零实现富文本编辑器#13-React非编辑节点的内容渲染
前端·架构·github
四千岁34 分钟前
Ollama+OpenWebUI 最佳组合:本地大模型可视化交互方案
前端·javascript·后端
写不来代码的草莓熊36 分钟前
el-date-picker ,自定义输入数字自动转换显示yyyy-mm-dd HH:mm:ss格式
前端·javascript·vue.js
ssshooter36 分钟前
Tauri 应用苹果签名踩坑实录
前端·架构·全栈