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

121
Vistas
Enfoca un elemento creado por un despacho en una parte diferente de la aplicación

Estoy escribiendo una aplicación algo compleja con React y Redux, y tengo una situación en la que hacer clic en un botón envía una acción que crea un nuevo elemento DOM en una parte completamente diferente de la aplicación y quiero que este nuevo elemento DOM esté enfocado. Me pregunto cuál es la mejor manera de hacerlo.

Me las arreglé para que funcione así:

 const handleClick = () => { ReactDOM.flushSync(() => { dispatch(createNewElement(id)); }); document.getElementById(id).focus(); };

Estoy usando identificaciones de DOM regulares para identificar el elemento para enfocar y la función flushSync (casi sin documentar) para asegurarme de que esté realmente presente en el DOM al seleccionarlo.

No puedo usar referencias porque el nuevo elemento está en un componente completamente diferente. No puedo usar autoFocus porque esos elementos también se pueden crear de formas que no deberían enfocarse automáticamente y no quiero que mi HTML se llene de enfoques automáticos obsoletos. No quiero poner el estado enfocado en la tienda Redux porque será una pesadilla mantenerlo correctamente.

En lugar de flushSync , también podría envolver el .focus en un setTimeout(…, 0) . Parece funcionar, pero no estoy completamente convencido de que el elemento esté garantizado para cuando se agote el tiempo de espera (a diferencia de flushSync ).

¿Es este un uso legítimo de ReactDOM.flushSync ? ¿Hay otra forma más sencilla de hacerlo?

about 4 years ago · Juan Pablo Isaza
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