swiper/vue 獲取 swiper實例方法詳解
在Vue3中使用swiper/vue,如何獲取swiper的組件實例? 在項目中使用到 swiper/vue,想調用slideTo方法,發(fā)現通過refs的方法,拿不到swiper實例。
<template> <swiper ref="swiperRef" class="promotion-activity-swiper" :modules="modules" :space-between="5" :initialSlide="2" slides-per-view="auto" :free-mode="true" :pagination="{ clickable: true }" > <swiper-slide> </swiper-slide> </swiper> </template> <script setup> import { reactive, onMounted, watch, ref } from 'vue'; import { Swiper, SwiperSlide } from 'swiper/vue' import { FreeMode } from 'swiper/modules' import 'swiper/css' import 'swiper/css/free-mode' const swiperRef = ref(null) onMounted(()=> { console.log(swiperRef.value) swiperRef.value.slideTo(3) }) </script>
通常我們想獲取VUE實例,會如上面實例,swiperRef = ref(null),再調用swiperRef.value就能拿到實例,但是這樣調用不了 swiperRef.value.slideTo() 方法,會報錯slideTo方法不存在。
在網上搜了一下如何調用swiper實例,大部分都是通過 swiperRef = new Swiper(‘.swiper’, options) 這種方法初始化swiper,然后直接能用 swiperRef 實例。這種方法需要自己定義一個div通過類名去初始化,與我直接調用 Swiper 組件不一樣。
解決方法:
查看了swiper官方文檔,這里在VUE中使用swiper有給出獲取實例的方法,
<template> <swiper @swiper="setSwiper" class="promotion-activity-swiper" :modules="modules" :space-between="5" :initialSlide="2" slides-per-view="auto" :free-mode="true" :pagination="{ clickable: true }" > <swiper-slide> </swiper-slide> </swiper> </template> <script setup> import { reactive, onMounted, watch, ref } from 'vue'; import { Swiper, SwiperSlide } from 'swiper/vue' import { FreeMode } from 'swiper/modules' import 'swiper/css' import 'swiper/css/free-mode' const swiperRef = ref(null) // 將swiper實例賦值給swiperRef const setSwiper = (swiper)=> { swiperRef.value = swiper } onMounted(()=> { swiperRef.value.slideTo(3) }) </script>
重點在于 @swiper=“setSwiper”, 參數就是swiper實例,setSwiper方法在mounted之前就會執(zhí)行。
到此這篇關于swiper/vue 獲取 swiper實例方法的文章就介紹到這了,更多相關vue 獲取 swiper實例內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3 setup中defineEmits與defineProps的使用案例詳解
在父組件中定義String、Number、Boolean、Array、Object、Date、Function、Symbol這些類型的數據,使用defineEmits會返回一個方法,使用一個變量emits(變量名隨意)去接收,本文給大家介紹vue3 setup中defineEmits與defineProps的使用案例,感興趣的朋友一起看看吧2023-10-10