SwiperSlide onTouchStart/onClick => 触发 slideNext()
SwiperSlide onTouchStart/onClick => trigger slideNext()
我想加入此幻灯片:https://swiperjs.com/react/
因为我发现拖动下一张幻灯片不太舒服,所以我想向完整的 Slider 添加一个 onClick
事件,以便下一张幻灯片出现。
如何在 React 中触发 slideNext()
?我在阅读文档时遇到问题/我不明白 - 文档似乎没有说明如何在反应中做到这一点。
在 jquery 中会是这样的:
$('section.slideshow').on( 'click', function() {
swiper.slideNext();
});
这是我的反应代码:
import React from 'react'
import SwiperCore, { Navigation, Pagination, A11y } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
import 'swiper/swiper.scss'
import 'swiper/components/navigation/navigation.scss'
import 'swiper/components/pagination/pagination.scss'
SwiperCore.use([Navigation, Pagination, A11y])
function Page(){
return (
<div>
<Swiper
onClick={() => console.log('click')}
onTouchStart={() => slideNext() }
>
<SwiperSlide>slide 1</SwiperSlide>
<SwiperSlide>slide 2</SwiperSlide>
</Swiper>
</div>
);
}
export default Page;
我使用如下:
<Swiper
getSwiper={this.updateSwiper}
{...params}
>{/*modules={[Navigation]}*/}
{items}
</Swiper>
通过这些函数:
updateSwiper(value:any) {
this.setState({
swiper: value
});
}
goNext = () => {
if (this.state.swiper !== null) {
this.state.swiper.slideNext();
}
};
您可以选择使用 Navigation
API,如 docs
中所写
<Swiper
navigation={{
nextEl: '.next',
}}
>
<SwiperSlide className="next">slide 1</SwiperSlide>
<SwiperSlide className="next">slide 2</SwiperSlide>
<SwiperSlide className="next">slide 3</SwiperSlide>
</Swiper>
代码沙盒:https://codesandbox.io/s/so-react-swiper-next-slide-2714t?file=/src/App.js
对于 React Hooks
像这样定义一个 useState:
const [my_swiper, set_my_swiper] = useState({});
然后在你的滑动器中这样定义它:
<Swiper
slidesPerView={1}
onInit={(ev) => {
set_my_swiper(ev)
}}>
<SwiperSlide>
<div>
Slide 1
</div>
</SwiperSlide>
<SwiperSlide>
<div>
Slide 2
</div>
</SwiperSlide>
</Swiper>
注意绑定到变量的 onInit 方法。
然后你就可以使用my_swiper
钩子来调用next/previous这样的函数了。
my_swiper.slideNext();
my_swiper.slidePrev();
您可以在任何地方调用这些来动态控制您的滑动器。
您还可以导航到任何幻灯片
my_swiper.slideTo(number);
我想加入此幻灯片:https://swiperjs.com/react/
因为我发现拖动下一张幻灯片不太舒服,所以我想向完整的 Slider 添加一个 onClick
事件,以便下一张幻灯片出现。
如何在 React 中触发 slideNext()
?我在阅读文档时遇到问题/我不明白 - 文档似乎没有说明如何在反应中做到这一点。
在 jquery 中会是这样的:
$('section.slideshow').on( 'click', function() {
swiper.slideNext();
});
这是我的反应代码:
import React from 'react'
import SwiperCore, { Navigation, Pagination, A11y } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/react'
import 'swiper/swiper.scss'
import 'swiper/components/navigation/navigation.scss'
import 'swiper/components/pagination/pagination.scss'
SwiperCore.use([Navigation, Pagination, A11y])
function Page(){
return (
<div>
<Swiper
onClick={() => console.log('click')}
onTouchStart={() => slideNext() }
>
<SwiperSlide>slide 1</SwiperSlide>
<SwiperSlide>slide 2</SwiperSlide>
</Swiper>
</div>
);
}
export default Page;
我使用如下:
<Swiper
getSwiper={this.updateSwiper}
{...params}
>{/*modules={[Navigation]}*/}
{items}
</Swiper>
通过这些函数:
updateSwiper(value:any) {
this.setState({
swiper: value
});
}
goNext = () => {
if (this.state.swiper !== null) {
this.state.swiper.slideNext();
}
};
您可以选择使用 Navigation
API,如 docs
<Swiper
navigation={{
nextEl: '.next',
}}
>
<SwiperSlide className="next">slide 1</SwiperSlide>
<SwiperSlide className="next">slide 2</SwiperSlide>
<SwiperSlide className="next">slide 3</SwiperSlide>
</Swiper>
代码沙盒:https://codesandbox.io/s/so-react-swiper-next-slide-2714t?file=/src/App.js
对于 React Hooks
像这样定义一个 useState:
const [my_swiper, set_my_swiper] = useState({});
然后在你的滑动器中这样定义它:
<Swiper
slidesPerView={1}
onInit={(ev) => {
set_my_swiper(ev)
}}>
<SwiperSlide>
<div>
Slide 1
</div>
</SwiperSlide>
<SwiperSlide>
<div>
Slide 2
</div>
</SwiperSlide>
</Swiper>
注意绑定到变量的 onInit 方法。
然后你就可以使用my_swiper
钩子来调用next/previous这样的函数了。
my_swiper.slideNext();
my_swiper.slidePrev();
您可以在任何地方调用这些来动态控制您的滑动器。
您还可以导航到任何幻灯片
my_swiper.slideTo(number);