Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
Alternar estado booleano en React Hooks

Cuando ejecuto el siguiente código y hago clic en el botón, logro activar la función useEffect:

 const { useState, useEffect } = React; const Example = () => { const [bool, setBool] = useState(false); useEffect(() => { console.log(bool); }, [bool]); return ( <button type='button' onClick={() => { setBool(!bool); setBool(!bool); }} > Check </button> ); }; ReactDOM.render( <Example />, root )
 <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <div id="root"></div>

Sin embargo, cuando escribo:

 const { useState, useEffect } = React; const Example = () => { const [bool, setBool] = useState(false); useEffect(() => { console.log(bool); }, [bool]); return ( <button type='button' onClick={() => { setBool(true); setBool(false); }} > Check </button> ); }; ReactDOM.render( <Example />, root )
 <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <div id="root"></div>

Entiendo que la función useEffect no se activa porque setBool es asíncrono, y React fusiona estos cambios para que el estado final no cambie (bool sigue siendo falso).

Mi pregunta es, ¿por qué React no puede detectarlo en el caso de !bool & !bool que aparecí.

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En el primer caso, está tomando el valor actual de bool (cualquiera que sea ese valor) y negándolo antes de establecerlo en el estado. Como resultado, el estado cambia, por lo que se activa useEffect .

En el segundo caso, está proporcionando un valor codificado. Si el valor de bool ya es false , entonces setBool(false) no tendrá ningún efecto en el estado; como resultado, useEffect no se activará.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda