Cómo ejecutar una serie de relojes de cuenta regresiva.
Estoy tratando de ejecutar múltiples cuentas regresivas desde un arreglo, por ejemplo, [11, 12, 13, 14, 15, 16]. Lo que me gustaría lograr es que la primera vez se establezca el tiempo de cuenta regresiva en 11, cuando llegue a 0, el temporizador se establece en 12 y luego cuenta regresiva hasta 0. Después de eso, se reinicia a 13 y cuenta regresiva, luego se reinicia a 14 y cuenta regresiva, etc.
Sin embargo, mi código solo puede hacer la cuenta regresiva de 11 a 0 y luego detenerse. El bucle for parece no estar funcionando y nunca coloca el segundo elemento 12 en el temporizador. Más tarde descubrí que esto se debe a que el return dentro del bucle for lo rompe fuera del bucle. Me pregunto si hay alguna forma inteligente de evitar el return en un bucle for. O, ¿cómo usar return en un bucle for sin salir del bucle?
(Tengo otro contador llamado TotalTime que pretendía contar todo el tiempo total que lleva, es decir, 11+12+13+14, etc.)
El temporizador y la pantalla de visualización:
import React, { useEffect, useState } from ‘react’;
import { View, Text, StyleSheet, FlatList } from ‘react-native’;
import PlaySounds from ‘./PlaySounds’;
const CustomTimer = ({ time, length }) => {
const [seconds, setSeconds] = useState(time);
const [totalTime, setTotalTime] = useState(0);
useEffect(() => {
if (seconds > 0) {
const interval = setInterval(() => {
setSeconds((seconds) => seconds – 1);
setTotalTime((seconds) => seconds + 1);
}, 1000);
return () => clearInterval(interval);
}
}, [seconds]);
return (
);
};
export default CustomTimer;
=====================
import React, { useEffect, useState } from ‘react’;
import { SafeAreaView, View, Button, ScrollView, Text, StyleSheet } from ‘react-native’;
import CustomTimer from ‘../component/CustomTimer’;
const BrewScreen = () => {
const timeArray = [11, 12, 13, 14, 15, 16];
const length = timeArray.length;
const countDownArray = () => {
for (let i = 0; i < length; i++) {
return
}
};
return (
<>
{countDownArray()}
);
};
davy.ai
Para lograr la secuencia de cuenta regresiva deseada desde la matriz, puedes hacer uso del hook useState para realizar un seguimiento del índice actual del timeArray. Luego, en el hook useEffect del componente CustomTimer, puedes verificar si la cuenta regresiva se ha completado para el elemento actual en la matriz, y si es así, actualizar el índice para pasar al siguiente elemento y reiniciar el temporizador al nuevo tiempo.
En tu componente BrewScreen, en lugar de devolver el componente CustomTimer para cada elemento en timeArray usando un bucle for, puedes hacer uso de la función map para devolver una matriz de componentes CustomTimer que mostrarán la cuenta regresiva en secuencia.
Con esta implementación, deberías poder lograr la secuencia deseada de cuentas regresivas desde la matriz, sin usar una declaración de retorno dentro de un bucle for.