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

256
Visualizações
Usando React useRef() para aplicar el foco a un TextArea dentro de un Popover cuando se abre

Tengo un AntDesign Popover que contiene un TextArea.

 <Popover trigger="click" content={footnoteContent} title="Footnote" visible={footnotePopoverVisible} onVisibleChange={handleFootnoteVisibleChange} > ... a custom Button... </Popover>

La const utilizada para el contenido es la siguiente:

 const footnoteContent = ( <Form form={form}> <Form.Item name={`${cellData.key}-fn`} initialValue={initialValue}> <Tooltip placement="left" title="Press Ctrl + Enter to close this window."> <Input.TextArea disabled={disabled} bordered={false} autoComplete="off" style={{ width: "300px" }} autoSize={{ minRows: 4 }} placeholder="Enter footnote" onBlur={() => save(cellData.key, form.getFieldValue(`${cellData.key}-fn`))} onKeyDown={handleKeyDown} autoFocus={true} ref={ref => { inputRef.current = ref; }} /> </Tooltip> </Form.Item> </Form> );

Entiendo que están pasando muchas cosas aquí. Sin embargo, tenga en cuenta que configuré el enfoque automático y, como era de esperar, la primera vez que abro el Popover, TextArea se enfoca. Sin embargo, cualquier clic posterior para abrir ese mismo Popover y TextArea ya no recibe el foco automáticamente. Investigué y descubrí que los ganchos useRef() deberían ayudar.

Entonces, cerca de la parte superior de mi componente funcional, he declarado:

 const inputRef = useRef();

y tenga en cuenta que dentro de mi TextArea he configurado la referencia de la siguiente manera (siguiendo algunos ejemplos que encontré en línea):

 ref={ref => { inputRef.current = ref; }}

El código emergente anterior tiene una llamada a una función onVisibleChange que apunta a esta función:

 function handleFootnoteVisibleChange (visible) { setFootnotePopoverVisible(visible); if (visible) { if (inputRef.current) { console.log(inputRef.current); inputRef.current.focus(); } } }

Lo cual esperaba que simplemente reenfocara el área de texto cuando la ventana emergente se hiciera visible. Sin embargo, nada parece suceder. Cuando inspecciono la sesión y verifico el console.log(inputRef.current); arriba, parece que hay una función focus() para llamar... pero no pasa nada.

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Con useRef , aplique la referencia directamente a su campo de entrada.

 const myRef = useRef(); ... <MyInput ref={myRef} ...

El método que mostró es una asignación de ref heredada de componentes basados en clases. useRef funciona diferente.

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