jum*_*ing 15 reactjs next.js swiper.js
我正在使用Swiper for React来显示一些幻灯片。
我一直坚持使用外部按钮在幻灯片(上一张和下一张)之间导航。
Swiper 有一个useSwiper 钩子,可以提供对其 Swiper 实例 API 的编程访问。但这不起作用。
这是我的代码:
import { useSwiper } from 'swiper/react';
//more code
const swiper = useSwiper();
//more code
<Swiper
modules={[Navigation, Pagination, Scrollbar, A11y]}
navigation
spaceBetween={20}
slidesPerView={1}
>
<button onClick={() => swiper.slideNext()}>Slide</button>
{
ads.map(ad => <SwiperSlide>
slider explanation
</SwiperSlide>
)}
</Swiper>
Run Code Online (Sandbox Code Playgroud)
当我单击该按钮时,我收到此错误:
类型错误:无法读取 null 的属性(读取“slideNext”)
Gab*_*oli 29
useSwiper必须由元素内的组件使用Swiper。
所以像下面这样
import { useSwiper } from "swiper/react";
const SwiperButtonNext = ({ children }) => {
const swiper = useSwiper();
return <button onClick={() => swiper.slideNext()}>{children}</button>;
};
Run Code Online (Sandbox Code Playgroud)
然后在里面使用它Swiper
<Swiper
modules={[Navigation, Pagination, Scrollbar, A11y]}
navigation
spaceBetween={20}
slidesPerView={1}
>
<SwiperButtonNext>Slide</SwiperButtonNext>
{ads.map((ad) => (
<SwiperSlide>slider explanation</SwiperSlide>
))}
</Swiper>;
Run Code Online (Sandbox Code Playgroud)
这是因为Swiper创建了一个上下文,并且useSwiper钩子尝试使用该上下文,因此需要从上下文提供程序的子级调用它。
小智 9
您可以使用组件onSwiper的事件Swiper来保存 swiper 实例React.useState,然后将此实例作为 prop 传递给 swiper 下一个/上一个按钮组件。
<Swiper
onSwiper={(swiper) => setSwiperInstance(swiper)}
>
...slides
</Swiper>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23377 次 |
| 最近记录: |