Sobes.tech
Middle

Jaka jest różnica między kontrolowanym a niekontrolowanym inputem i kiedy co używać?

sobes.tech AI

Odpowiedź od AI

Kontrolowane wejście — to element formularza, którego wartość jest całkowicie kontrolowana przez stan komponentu (np. w React). Wartość pola jest przechowywana w stanie i aktualizowana przez obsługę zdarzeń.

Niekontrolowane wejście — to element formularza, który jest zarządzany przez sam DOM, a nie przez stan komponentu. Wartość odczytuje się za pomocą referencji, gdy jest to potrzebne.

Kiedy używać:

  • Kontrolowane wejście jest wygodne, gdy trzeba natychmiast reagować na zmiany, walidować dane, synchronizować z stanem aplikacji.
  • Nie kontrolowane wejście jest prostsze i szybsze dla prostych formularzy, gdzie nie jest wymagana stała kontrola nad wprowadzaniem danych.

Przykład kontrolowanego wejścia w React:

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

Przykład niekontrolowanego wejścia:

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