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

149
Vistas
advertencia: React Hook useEffect tiene una dependencia faltante

¿Cómo puedo deshacerme de la advertencia "React Hook useEffect tiene una dependencia faltante" mientras escribo mi código?

Esta es una parte del código y la advertencia que recibo.

 useEffect(() => { if(inactive){ document.querySelectorAll('.sub-menu').forEach((el) => { el.classList.remove("active"); }); } props.onCollapse(inactive); }, [inactive]);

ingrese la descripción de la imagen aquí

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

0

Debe incluir props en la matriz de dependencia.

 useEffect(() => { // your code }, [props, inactive]);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe incluir props.onCollapse como una dependencia.

 useEffect(() => { // ... }, [props.onCollapse, inactive]) // ✅

No debe pasar todo el objeto de props como sugiere otra respuesta.

Y hay algo más sucediendo en su código que también necesita atención. ¿Ves cómo estás usando document.querySelector y classList remove?

 document.querySelectorAll('.sub-menu').forEach((el) => { el.classList.remove("active"); // ⚠️ react is not jQuery });

Este es un anti-patrón en reaccionar. En cambio, su componente de menú debe representar los nombres de clase del classNames como una función pura del estado del menú.

 function Menu({ items = [], initState = true }) { const [active, setActive] = React.useState(initState) const onClick = event => { event.stopPropagation(); setActive(!active) } return active // ✅ data-driven render ? <div className="menu" onClick={onClick}> {items.map((item, key) => Array.isArray(item) ? <Menu key={key} items={item} /> : <MenuItem key={key} item={item} /> )} </div> : <div className="menu" onClick={onClick}> <MenuItem item={items[0]} /> </div> }

Ejecute el código a continuación y haga clic en algunos elementos del menú para verlos alternar abiertos y cerrados. Tenga en cuenta que los efectos useEffect , document.query* y classList no son necesarios.

 function Menu({ items = [], initState = true }) { const [active, setActive] = React.useState(initState) const onClick = event => { event.stopPropagation(); setActive(!active) } return active ? <div className="menu" onClick={onClick}> {items.map((item, key) => Array.isArray(item) ? <Menu key={key} items={item} /> : <MenuItem key={key} item={item} /> )} </div> : <div className="menu" onClick={onClick}> <MenuItem item={items[0]} /> </div> } function MenuItem({ item }) { return <div>{item}</div> } const mymenu = [ "Main Menu", ["Clothing", "Shirts", "Pants", ["Footwear", "Shoes", "Boots"]], ["Accessories", "Bags", "Hats"] ] ReactDOM.render(<Menu items={mymenu} />, document.querySelector("#app"))
 .menu { border: 1px solid gray; padding: 1rem; cursor: pointer; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.14.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.14.0/umd/react-dom.production.min.js"></script> <div id="app"></div>

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