开发者问题收集

SwiperSlide onTouchStart/onClick => 触发 slideNext()

2020-08-08
19526

我想包含此幻灯片: https://swiperjs.com/react/

由于我发现拖动下一张幻灯片不太舒服,我想向完整滑块添加一个 onClick 事件,以便下一张幻灯片出现。

如何在 React 中触发 slideNext() ?我在阅读文档时遇到问题/我不明白它 - 而且似乎文档没有告诉如何在 react 中执行此操作。

在 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;
3个回答

您可以选择使用 文档 中所述的 Navigation API

<Swiper
    navigation={{
        nextEl: '.next',
    }}
>
    <SwiperSlide className="next">slide 1</SwiperSlide>
    <SwiperSlide className="next">slide 2</SwiperSlide>
    <SwiperSlide className="next">slide 3</SwiperSlide>
</Swiper>

CodeSandBox: https://codesandbox.io/s/so-react-swiper-next-slide-2714t?file=/src/App.js

95faf8e76605e973
2020-08-08

对于 React Hooks

像这样定义一个 useState:

const [my_swiper, set_my_swiper] = useState({});

然后在你的 swiper 中像这样定义它:

<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 钩子来调用像这样的下一个/上一个函数。

my_swiper.slideNext();
my_swiper.slidePrev();

你可以在任何地方调用它们来动态控制你的 swiper。

你也可以导航到任何幻灯片

my_swiper.slideTo(number);
Anutosh Chaudhuri
2021-08-19

我按如下方式使用它:

<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();
    }
};
Mojtaba Karimi
2020-08-08