Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

138
Views
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 answers
Answer question

0

Debe incluir props en la matriz de dependencia.

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

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!