Tol*_*ldo 11 javascript vue.js swiper.js vue-script-setup
我正在尝试复制此内容,仅使用<script setup>没有this关键字的标签。
模板(来自我试图复制的代码)
<swiper ref="swiper">
<swiper-slide></swiper-slide>
<swiper-slide></swiper-slide>
</swiper>
<a class="swiper-navigation is-previous" @click="swiper.slidePrev()"></a>
<a class="swiper-navigation is-next" @click="swiper.slideNext()"></a>
Run Code Online (Sandbox Code Playgroud)
脚本(来自我试图复制的代码)
computed: {
swiper() {
return this.$refs.swiper.swiper;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用getCurrentInstance()但由于某种原因getCurrentInstance().refs返回空对象{},即使我这样做时它就在那里console.log(getCurrentInstance())。
我的<script setup>组件
<script setup lang="ts">
import { Swiper, SwiperSlide } from 'swiper/vue';
const swiper = // ???
const handleNextSlide = () => swiper.slideNext()
const handlePrevSlide = () => swiper.slidePrev()
</script>
<template>
<div>
<button @click="handlePrevSlide()">Prev</button>
<button @click="handleNextSlide()">Next</button>
<Swiper ref="swiper">
<SwiperSlide>1</SwiperSlide>
<SwiperSlide>2</SwiperSlide>
<SwiperSlide>3</SwiperSlide>
<SwiperSlide>4</SwiperSlide>
<SwiperSlide>5</SwiperSlide>
</Swiper>
</div>
</template>
Run Code Online (Sandbox Code Playgroud)
如果您想要相当于:
computed: {
swiper() {
return this.$refs.swiper.swiper;
}
}
Run Code Online (Sandbox Code Playgroud)
在 中script setup,您只需要:
<script setup>
import { computed, ref } from "vue";
...
const swiper = ref(null)
// .swiper will only work if the ref swiper (Swiper element) has a property named swiper
const swiperComputed = computed(() => swiper.value.swiper)
...
</script>
<template>
<Swiper ref="swiper">
<SwiperSlide>1</SwiperSlide>
<SwiperSlide>2</SwiperSlide>
<SwiperSlide>3</SwiperSlide>
<SwiperSlide>4</SwiperSlide>
<SwiperSlide>5</SwiperSlide>
</Swiper>
</template>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17214 次 |
| 最近记录: |