Я делаю своего рода карусель в React.
function CareersReasonsCarousel(props) {
const [current, setCurrent] = useState(0);
const [dir, setDir] = useState("next");
const [auto, setAuto] = useState(true);
const move = (pos) => {
setAuto(false);
setCurrent(current+pos);
}
useEffect(() => {
setTimeout(() => {
if (auto) {
setCurrent(current+1);
}
}, 5000);
}, [current]);
}
И ниже, в моем return
, у меня есть
<div className="arrow next" onClick={ () => { move(1) }}><img src={ arrow_right } alt="" /></div>
Я хочу, чтобы карусель началасьАвтовоспроизведение, когда страница загружается впервые, и теряет автовоспроизведение, когда кто-то нажимает стрелки «следующий» или «предыдущий». Проблема в том, как он настроен, когда я нажимаю стрелки, карусель все еще будет ждать оставшуюся 5-секундную задержку и выполнит последний зарегистрированный «setTimeout», и только тогда она увидит, что auto
false
и больше не нужно его автоматизировать.
Как я могу получить его для проверки значения auto
, не при регистрации setTimeout, но когда он должен быть выполнен (послеЗадержка 5 секунд)?
Спасибо!