问题描述
我的 reactJS 网页有一个带有 2 个按钮的 react-slick carousel。一种是暂停自动播放,另一种是开始自动播放 自动播放正在工作,暂停按钮也在工作,但单击时不会更改为播放图标。 我怎样才能制定我的条件,让它能够在点击时更改图标?
const Home = () => {
const [data,setData] = useState([{}]);
const [isLoading,setIsLoading] = useState(true);
const [autoplayOn,setAutoplayOn] = useState(true);
const settings = {
infinite: true,speed: 500,slidesToShow: 1,slidesToScroll: 1,autoplay: true,};
const customeSlider = React.createRef();
const gotoNext = () => {
customeSlider.current.slickNext();
};
const goToPlay = () => {
customeSlider.current.slickPlay();
};
const goToPause = () => {
customeSlider.current.slickPause();
};
const gotoPrev = () => {
customeSlider.current.slickPrev();
};
const fetchData = async () => {
try {
const response = await axios.get(
"https://art-ceramic.herokuapp.com/home"
);
setData(response.data);
setIsLoading(false);
} catch (error) {
console.log(error.message);
}
};
useEffect(() => {
setTimeout(() => setIsLoading(false),12000);
fetchData();
},[]);
return isLoading ? (
<span></span>
) : (
<div className="home-container">
<div className="row">
<div className="menu-ordi">
<Left />
</div>
<div className="product-images">
<Slider
{...settings}
className="carousel"
arrows={true}
ref={customeSlider}
>
{data.products.map((el) => {
return (
<div className="div-carousel">
{el.product_image && (
<img
className="pics"
src={el.product_image.url}
alt="home-carousel"
/>
)}
</div>
);
})}
</Slider>
<div className="description-work">
<div className="nextt row">
<button className="click-n" onClick={() => gotoPrev()}>
<FontAwesomeIcon icon={faChevronLeft} />
</button>
{settings.autoplay ? (
<button
className="click-n"
onClick={() => {
goToPause();
}}
>
<FontAwesomeIcon icon={faPause} />
</button>
) : (
<button className="click-n">
<FontAwesomeIcon icon={faPlay} onClick={() => goToPlay()} />
</button>
)}
<button className="click-n" onClick={() => gotoNext()}>
<FontAwesomeIcon icon={faChevronRight} />
</button>
</div>
</div>
</div>
</div>
</div>
);
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)