vue中swiper的使用及初始化问题

安装swiper

npm i --s swiper;

引入swiper

import Swiper from ‘swiper’; 
import ‘swiper/dist/css/swiper.min.css’;

使用swiper

HTML

<div class="swiper-container">
    <div class="swiper-wrapper">
    		<div class="swiper-slide>1<div>
    		<div class="swiper-slide>2<div>
    		<div class="swiper-slide>3<div>
      </div>
</div>

在vue中常用ajax获取数据,在mounted中引入数据

axios
.get('www.csdn.nzb.com')
.then(res=>{this.list = res})
.catch(err=>console.log(err))

初始化swiper

var swiper = new Swiper('.swiper-container',{
	loop:true;
	autoplay:true;
})

注意

swiper初始化问题

因为swiper数据是异步获取的,所以我们的swiper初始化要在状态赋值完,异步更新dom树上树之后再进行swiper的初始化

解决方法

1、在updated生命周期进行swiper初始化
updated(){new Swiper('.swiper-container',{})}
缺点:updated生命周期会频繁执行,只要状态发生改变updated就会重复执行,swiper初始化会多次执行,会导致swiper出现不可预知的错误
2、使用swiper提供的更新方法

在mounted生命周期中照常初始化swiper

mounted(){this.myswiper = new Swiper('.swiper-container',{})} ,  //this.myswiper自定义方法
updated(){this.myswiper.updated()}  //让swiper自动更新一次
缺点:可复用性不好
3、组件化封装
 <div id="box">
        <swiper :key="datalist.length">
            <div v-for="data in datalist" :key="data" class="swiper-slide">
                <img :src="data" >
            </div>
        </swiper>
    </div>
	Vue.component("swiper", {
            template: `
                <div class="swiper-container">
                    <div class="swiper-wrapper">
                        <slot></slot>
                    </div
                </div>
            `,
            mounted() {
                new Swiper("swiper-container ", {})
            }
        })
        new Vue({
				el:"#box",
				data: { datalist:[]},
				mounted() {
						axios
							.get('www.nzb.com')
							.then(res=>{this.list = res})
							.catch(err=>console.log(err))
					}
		})

利用组件的唯一性,给是wiper加上唯一的key值,通过虚拟dom的diff算法来重新创建dom,即当ajax的数据请求来时,key值发生变化,重新创建一边swiper,原来的swiper就会销毁,轮播就可以使用了

优点:可复用性强,利于后期维护

以上内容经供参考

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue3,你可以通过以下步骤来使用Swiper库进行轮播: 1. 首先,安装Swiper库。你可以使用npm来安装Swiper的最新版本。在终端运行以下命令: ``` npm install swiper@5 --save-dev ``` 2. 在Vue组件引入Swiper库。你可以使用ES模块引入方式来引入Swiper,如下所示: ```javascript import Swiper from 'swiper'; import 'swiper/swiper-bundle.css'; export default { mounted() { // 在组件挂载后初始化Swiper new Swiper('.swiper-container', { // 配置Swiper的选项 // 例如:slidesPerView, loop, pagination等 }); } } ``` 3. 在模板创建轮播容器。在组件的模板创建一个包含图片或内容的轮播容器,并为其添加一个唯一的类名,以便Swiper可以找到它。例如: ```html <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> <div class="swiper-pagination"></div> </div> </template> ``` 4. 在Vue组件的挂载方法初始化Swiper。在Vue组件的`mounted`生命周期钩子,创建一个新的Swiper实例,并传入轮播容器的选择器,以及其他配置选项。例如: ```javascript mounted() { new Swiper('.swiper-container', { slidesPerView: 'auto', loop: true, pagination: { el: '.swiper-pagination', clickable: true } }); } ``` 通过以上步骤,你就可以在Vue3使用Swiper库来实现轮播效果了。记得在组件引入Swiper的CSS文件,以确保样式正常加载。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue3 使用 swiper轮播库](https://blog.csdn.net/qq_36131788/article/details/121083045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值