mee*_*eez 1 typescript reactjs swiper.js
我正在将Swiper js用于我的轮播、React 和 Typescript。
在这篇文章之后,我尝试在悬停时自动stop()播放start()。我需要这种方法,因为我必须在悬停 Swiper 容器时创建一些状态。
1)ref我的组件上的属性出现打字稿错误<Swiper ref={swiperRef}>:
类型“IntrinsicAttributes & Swiper & {children?”上不存在属性“ref”?
2)如何访问swiper,以便我可以swiper.autoplay.stop();在我的函数内部使用handleMouseEnter?所以我可以这样使用:
const handleMouseEnter = () => {
swiper.autoplay.stop();
};
Run Code Online (Sandbox Code Playgroud)
或类似:
const handleMouseEnter = () => {
swiperRef.current.swiper.autoplay.stop();
};
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的沙箱。
我如何使用 Typescript 让它工作?
小智 5
您可以在 ref 中初始化时存储您的 swiper,然后使用其controllerEvents,如下所示:
import React from "react";
import { Swiper, SwiperSlide } from "swiper/react";
import SwiperCore, { Autoplay, Pagination } from "swiper";
SwiperCore.use([Pagination, Autoplay]);
export default function SwiperComponent() {
const swiperRef = React.useRef<SwiperCore>();
const onInit = (Swiper: SwiperCore): void => {
swiperRef.current = Swiper;
};
const handleMouseEnter = () => {
if (swiperRef.current) swiperRef.current.autoplay.start();
};
const handleMouseLeave = () => {
if (swiperRef.current) swiperRef.current.autoplay.stop();
};
return (
<div onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
<Swiper onInit={onInit}>
<SwiperSlide></SwiperSlide>
</Swiper>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |