У меня проблема с setInterval в ReactJS (особенно с функциональным компонентом). Я хочу включить слайдер автозапуска (это означает, что значение в ползунке будет увеличиваться через некоторое время). Эта функция будет срабатывать при нажатии кнопки. Но я не знаю точно, как setInterval работает с setValue. Журнал консоли просто возвращает начальное значение (не изменяется) (функция console.log была вызвана в функции обратного вызова setInterval).
Мой код ниже:
const [value, setValue] = useState(10);
const [playable, setPlayable] = useState(false);
useEffect(() => {
if (playable === true) {
console.log("Trigger");
const intervalId = setInterval(increaseValue, 1000);
return () => clearInterval(intervalId);
}
}, [playable]);
const increaseValue = () => {
console.log(value);
setValue(value + 1);
};
const autoPlay = () => {
setPlayable(true);
};
return (
<div>
<div style={{"width": "800px"}}>
<Slider
value={value}
step={1}
valueLabelDisplay="on"
getAriaValueText={valueText}
marks={marks}
onChange={handleChange}
min={0}
max={100}
/>
</div>
<button onClick={autoPlay}>Play</button>
</div>
)