SvelteKit 和 Swiper 6.8.1:如何使用 slideTo(index)
SvelteKit and Swiper 6.8.1: how to use slideTo(index)
Slider 6.8.1 与 SvelteKit 配合良好。我希望也能通过程序 select 某张幻灯片。 swiper.slideTo(index, speed)
.
这显然是可能的
swiper
是这样创建的:
const swiper = new Swiper('.swiper-container', {
speed: 400,
spaceBetween: 100,
});
但是,SvelteKit 需要像这样导入 Swiper:
import Swiper from 'swiper/esm/svelte/swiper.svelte';
但是 new Swiper
returns 错误信息
__vite_ssr_import_1__.default is not a constructor
这个很好理解,但是怎么解决呢?
如果您从 'swiper/esm/svelte/swiper.svelte'
导入 Swiper
,那么它不再是 class,而是您将在模板中使用的精巧组件,例如:
<Swiper>
<SwiperSlide>Slide 1</SwiperSlide>
<SwiperSlide>Slide 2</SwiperSlide>
...
</Swiper>
在您的情况下,您需要组件和将在组件安装期间初始化的 class:
import SwiperComponent from "swiper/esm/svelte/swiper.svelte";
import { Swiper } from "swiper";
然后您可以将 Swiper
实例存储在反应变量中,如本例所示:
<script>
import { onMount } from "svelte";
import SwiperComponent from "swiper/esm/svelte/swiper.svelte";
import SwiperSlide from "swiper/esm/svelte/swiper-slide.svelte";
import { Swiper } from "swiper";
import "swiper/swiper.scss";
let swiper = null;
onMount(() => {
// initialise the swiper
swiper = new Swiper(".swiper-container", {
loop: true
});
// go to slide 6 after one second
setTimeout(() => {
swiper.slideTo(6, 1000);
}, 1000);
});
</script>
<SwiperComponent>
<SwiperSlide>Slide 1</SwiperSlide>
<SwiperSlide>Slide 2</SwiperSlide>
...
</SwiperComponent>
Slider 6.8.1 与 SvelteKit 配合良好。我希望也能通过程序 select 某张幻灯片。 swiper.slideTo(index, speed)
.
swiper
是这样创建的:
const swiper = new Swiper('.swiper-container', {
speed: 400,
spaceBetween: 100,
});
但是,SvelteKit 需要像这样导入 Swiper:
import Swiper from 'swiper/esm/svelte/swiper.svelte';
但是 new Swiper
returns 错误信息
__vite_ssr_import_1__.default is not a constructor
这个很好理解,但是怎么解决呢?
如果您从 'swiper/esm/svelte/swiper.svelte'
导入 Swiper
,那么它不再是 class,而是您将在模板中使用的精巧组件,例如:
<Swiper>
<SwiperSlide>Slide 1</SwiperSlide>
<SwiperSlide>Slide 2</SwiperSlide>
...
</Swiper>
在您的情况下,您需要组件和将在组件安装期间初始化的 class:
import SwiperComponent from "swiper/esm/svelte/swiper.svelte";
import { Swiper } from "swiper";
然后您可以将 Swiper
实例存储在反应变量中,如本例所示:
<script>
import { onMount } from "svelte";
import SwiperComponent from "swiper/esm/svelte/swiper.svelte";
import SwiperSlide from "swiper/esm/svelte/swiper-slide.svelte";
import { Swiper } from "swiper";
import "swiper/swiper.scss";
let swiper = null;
onMount(() => {
// initialise the swiper
swiper = new Swiper(".swiper-container", {
loop: true
});
// go to slide 6 after one second
setTimeout(() => {
swiper.slideTo(6, 1000);
}, 1000);
});
</script>
<SwiperComponent>
<SwiperSlide>Slide 1</SwiperSlide>
<SwiperSlide>Slide 2</SwiperSlide>
...
</SwiperComponent>