Estou seguindo um tutorial do React e atualmente tenho este código React:
import { useRef } from 'react';
const AddItem = ({ newItem, setNewItem, handleSubmit }) => {
const inputRef = useRef();
return (
<form className="addForm" onSubmit={handleSubmit}>
<input
ref={inputRef}
id="addItem"
type="text"
value={newItem}
onChange={(e) => setNewItem(e.target.value)}
/>
<button
type="submit"
onClick={() => inputRef.current.focus()}
// onClick={() => document.getElementById('addItem').focus()} // What does this do differently?
>
</button>
</form>
);
};
export default AddItem;
Estou usando useRef()
junto com onClick={() => inputRef.current.focus()}
para garantir que a entrada de texto esteja focada depois de clicar no botão.
Posso fazer a mesma coisa sem precisar do useRef
gancho usando onClick={() => document.getElementById('addItem').focus()}
.
Existe algum benefício em usar o useRef
método em vez do getElementById
método anterior?
No React, você normalmente não acessa o DOM diretamente, você deixa o React fazer isso para você. Usar refs do React é uma maneira de fazer isso. Você não precisa atribuir ids dessa forma ou usar outros seletores de consulta.
Esta resposta entra em detalhes: https://stackoverflow.com/a/69260293/13637489
Muitas informações podem ser encontradas diretamente na documentação do React :