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

180
Visualizações
Cómo establecer correctamente el foco en un elemento div en React usando createRef

Tengo una aplicación de reacción en la que estoy trabajando, y actualmente tengo un menú desplegable personalizado que quiero abrir/cerrar cuando un usuario hace clic en el gatillo (el botón de flecha), cerrarlo cuando un usuario selecciona una opción, o ciérrelo cuando un usuario haga clic fuera del componente mostrado.

Aquí está mi código:

En aras de la simplicidad, solo agregué el código con el que quiero ayuda.

 class NavBar extends Component { constructor(props) { super(props); this.state = { showCurrencies: false, }; this.handleShowCurrencies = this.handleShowCurrencies.bind(this); } componentDidMount() { this.currencyRef = createRef(); } componentDidUpdate(prevProps, prevState) { if (this.state.showCurrencies) return this.currencyRef.current.focus(); } handleShowCurrencies = () => { this.setState({ showCurrencies: !this.state.showCurrencies, }); }; render() { <div className="currency-switch" onClick={this.handleShowCurrencies}> {currencySymbol} <span> <button> <img src={`${process.env.PUBLIC_URL}/images/arrow.png`} /> </button> </span> </div> {this.state.showCurrencies ? ( <div className="dropdown" tabIndex={"0"} ref={this.currencyRef} onBlur={this.handleShowCurrencies} > {currencies?.map((currency) => ( <div key={currency.symbol} className={`dropdown-items ${currencySymbol === currency.symbol ? "selected" : "" }`} onClick={() => changeCurrencySymbol(currency.symbol)} > {`${currency.symbol} ${currency.label}`} </div> ))} </div> ) : null} }

Actualmente, dirigir el foco a un elemento div funciona bien y hacer clic fuera del elemento también. Sin embargo, volver a hacer clic en el gatillo o incluso seleccionar una opción no cierra el elemento div. Parece que se está procesando dos veces (echa un vistazo más de cerca a la consola): https://drive.google.com/file/d/1ObxU__SbD_Upxr6qcy5eYO4LSy6Mzq9C/view?usp=sharing

¿Por qué está pasando eso? ¿Cómo puedo resolverlo?

PD: No suelo preguntar sobre StackOverflow, así que no estoy familiarizado con el proceso. Por favor, tenga paciencia conmigo. Si necesita cualquier otra información, estaré más que feliz de proporcionársela.

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