Sobes.tech
Middle

Qual é a diferença entre input controlado e não controlado e quando usar cada um?

sobes.tech IA

Resposta da IA

Entrada controlada — é um elemento de formulário cujo valor é totalmente controlado pelo estado do componente (por exemplo, no React). O valor do campo é armazenado no estado e atualizado através de um manipulador de eventos.

Entrada não controlada — é um elemento de formulário que é gerido pelo próprio DOM, e não pelo estado do componente. O valor é lido através de referências quando necessário.

Quando usar:

  • Entrada controlada é conveniente quando é necessário reagir imediatamente às mudanças, validar dados, sincronizar com o estado da aplicação.
  • Entrada não controlada é mais simples e rápida para formulários simples onde não é necessário controle constante da entrada.

Exemplo de entrada controlada em React:

function MyInput() {
  const [value, setValue] = React.useState('');
  return <input value={value} onChange={e => setValue(e.target.value)} />;
}

Exemplo de entrada não controlada:

function MyInput() {
  const inputRef = React.useRef(null);
  const handleSubmit = () => {
    alert(inputRef.current.value);
  };
  return <>
    <input ref={inputRef} />
    <button onClick={handleSubmit}>Enviar</button>
  </>;
}