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

254
Vistas
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 Respuestas
Responde la pregunta

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 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