Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

124
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda