Lo que me gustaría que sucediera aquí es mostrar un número aleatorio cada 50ms y luego detenerse después de 5 segundos, creando un efecto de números aleatorios animados. Luego compare el último número aleatorio generado con el número ingresado por el usuario. Si el último número aleatorio generado es igual a la entrada del usuario, hará algo como console.log
El problema aquí es que el código no hace nada, incluso si el último número aleatorio generado es igual a la entrada del usuario.
¿Cuál es la mejor manera de generar una animación de números aleatorios en reactjs y comparar el número aleatorio con un número de entrada? (como usar una declaración if que compara si el número aleatorio es igual al número de entrada)
const [randomNumber, setRandomNumber] = useState(0); const [toggle, setToggle] = useState(false); const [inputNum, setInputNum] = useState(0); useEffect(() => { let counter; if (toggle) { counter = setInterval( () => setRandomNumber(Math.floor(Math.random() * 10)), 50 ); } return () => { clearInterval(counter); }; }, [toggle]); const handleGenerateNumber = () => { setToggle(true); setTimeout(() => { setToggle(false); }, 5000); if (inputNum === randomNumber) { console.log(randomNumber, "you won"); } };Tienes un error en if statement . Debe estar en el bloque setTimeout . Demostración: https://codesandbox.io/s/dreamy-booth-ddtni