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

255
Views
Usecallback falla en la memorización

Tengo el siguiente código donde los cambios en el componente principal provocan que el elemento secundario se reproduzca. Básicamente, el componente Menú debería aparecer haciendo clic con el botón derecho en la parte superior de la etiqueta del marcador de posición, pero cuando aparece, todo el componente principal parpadea. Usé Usecallback sin suerte. Probé useMemo pero no acepta ningún argumento. Dado que mis funciones de devolución de llamada se activan como resultado de eventos, es importante pasar el objetivo del evento. Por lo tanto, debo pasar el argumento. Agradezco cualquier sugerencia.

 const [menu, setMenu] = useState({isActive: false, position: undefined}); <div className='placeholder' onClick={clickHandler} onContextMenu={rightClickHandler}> {menu.isActive && <Menu menu={menu} />} {[props.entity].map(plc => { let Content = place[props.entity]; if(Content) { return <Content key={Math.random()} /> } })} </div> const rightClickHandler = useCallback((e) => { e.preventDefault(); const parentPosition = e.target.getBoundingClientRect(); const position = { left: e.clientX - parentPosition.left, top: e.clientY - parentPosition.top }; setMenu( { isActive: (menu.isActive ? menu.isActive: !menu.isActive), position: { left: position.left, top: position.top } } ); }, []); const clickHandler = useCallback((e) => { setMenu({isActive: false, module: '', position: undefined}); }, []);
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No necesita useCallback para esto si lo usa de esta manera. Espero que esto lo solucione.

 const rightClickHandler = (e) => { e.preventDefault() const parentPosition = e.target.getBoundingClientRect() const position = { left: e.clientX - parentPosition.left, top: e.clientY - parentPosition.top, } setMenu((menu) => { return { isActive: menu.isActive ? menu.isActive : !menu.isActive, position, } }) }
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!