如何在悬停时暂停 React Swiper 中的自动播放?
2022-01-28
4948
我试图弄清楚如何在将鼠标悬停在滑动条上时暂停自动播放,但我无法在任何地方找到它
<Swiper
spaceBetween={0}
navigation={{
prevEl: navigationPrevRef.current,
nextEl: navigationNextRef.current,
}}
autoplay={{
delay: 3000,
pauseOnMouseEnter: true,
}}
>
2个回答
在这种情况下,您只需要将
pauseOnMouseEnter
属性设置为
true
,就像您所做的那样。问题似乎是因为您没有连接自动播放模块。
您应该已经导入了这些:
import { Autoplay, Navigation } from 'swiper'
import 'swiper/css'
import 'swiper/css/navigation'
现在
Autoplay
已导入,我们需要将其连接到单个 Swiper:
<Swiper
// spaceBetween can be removed if you have it set to 0
// spaceBetween={0}
navigation={{
prevEl: navigationPrevRef.current,
nextEl: navigationNextRef.current,
}}
autoplay={{
disableOnInteraction: false, // Optional, but recommended
delay: 3000
pauseOnMouseEnter: true,
}}
modules={[ Autoplay, Navigation ]}
>
希望这能有所帮助。Swiper 可能很麻烦。他们的文档非常详细。
andrilla
2022-07-25
因此我找到了一种解决方法,希望它能帮助那些仍然面临此问题的人。 只需为您的 swpier 提供引用,在您的父 div 上使用 onMouseEnter 和 onMouseLeave
import {useRef} from "react";
const swiperRefLocal = useRef()
const handleMouseEnter = () => {
swiperRefLocal?.current?.swiper?.autoplay?.stop()
};
const handleMouseLeave = () => {
swiperRefLocal?.current?.swiper?.autoplay?.start()
};
<div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
<Swiper
spaceBetween={0}
ref={swiperRefLocal}
navigation={{
prevEl: navigationPrevRef.current,
nextEl: navigationNextRef.current,
}}
autoplay={{
delay: 3000,
}}
>
</div>
Burhan Ali
2022-12-07