#arrays #reactjs #setinterval #react-state-management
#массивы #reactjs #setinterval #реагирование-управление состоянием
Вопрос:
currentIndex показывает 0 каждый раз, когда я хочу запустить его до пользовательской длительности или длины динамического массива
Const [currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, 3000);
}, []);
Ответ №1:
Состояние реакции является асинхронным, поэтому для обновления требуется некоторая задержка. поэтому используйте отдельный useEffect
хук для прослушивания индекса
Const[currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log('Current Index', currentIndex);
}, [currentIndex])
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
}, 3000);
}, []);
Ответ №2:
Вы можете сделать это так
var [currentIndex, setCurrentIndex] = useState(1);
useEffect(() => {
setInterval(() => {
setCurrentIndex(5);
if (currentIndex >= 5) {
setCurrentIndex(0);
}
console.log("Current Index", currentIndex);
}, 3000);
}, [currentIndex]);