0Pricing
React Academy · Lekcja

Niekontrolowane pola wejściowe z useRef

Uzyskuj dostęp do wartości pól DOM za pomocą refów zamiast stanu w prostych formularzach

Niekontrolowane pola wejściowe z useRef to bezpłatna lekcja React Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.

Wprowadzenie

W tej lekcji użyją Państwo niekontrolowanych pól wejściowych wraz z useRef, aby uzyskiwać dostęp do wartości pól DOM bez zarządzania nimi w stanie Reacta.

Kontrolowane a niekontrolowane pola

**Kontrolowane pole** ma wartość sterowaną przez stan Reacta (value + onChange). **Niekontrolowane pole** zarządza własną wartością w DOM, a React odczytuje ją za pomocą referencji tylko wtedy, gdy jest to potrzebne.
// Controlled
<input value={name} onChange={e => setName(e.target.value)} />

// Uncontrolled
const nameRef = useRef();
<input ref={nameRef} defaultValue="" />

Odczytywanie wartości podczas wysyłania

W przypadku niekontrolowanych pól wartość należy odczytać podczas wysyłania formularza, uzyskując dostęp do `ref.current.value`. Podczas wpisywania tekstu przez użytkownika nie są wykonywane żadne aktualizacje stanu.
function Form() {
  const nameRef = useRef();
  const handleSubmit = (e) => {
    e.preventDefault();
    console.log(nameRef.current.value);
  };
  return (
    <form onSubmit={handleSubmit}>
      <input ref={nameRef} />
      <button type="submit">Submit</button>
    </form>
  );
}

defaultValue a value

W przypadku niekontrolowanych pól należy używać `defaultValue` (nie `value`) do ustawienia wartości początkowej. Ustawienie `value` bez `onChange` powoduje ostrzeżenie Reacta i zmienia pole w tylko do odczytu.
<input ref={nameRef} defaultValue="Initial text" />

Kiedy używać niekontrolowanych pól

Niekontrolowane pola są przydatne w: prostych formularzach, w których wartości są potrzebne dopiero podczas wysyłania, polach plików (którymi React nie może sterować) oraz polach, w przypadku których wydajność ma kluczowe znaczenie i ważne jest unikanie ponownych renderowań.

Resetowanie niekontrolowanego pola

Aby zresetować niekontrolowane pole, należy imperatywnie ustawić `ref.current.value = ''`. Można też zmienić prop `key` komponentu, aby wymusić ponowne zamontowanie go z nowym węzłem DOM.
// Reset imperatively
nameRef.current.value = '';

// Or remount
setFormKey(k => k + 1);
<input key={formKey} ref={nameRef} />

Wiele referencji dla wielu pól

W formularzach z wieloma niekontrolowanymi polami należy utworzyć osobną referencję dla każdego pola. Podczas wysyłania formularza należy uzyskać dostęp do `.current.value` każdej referencji.
const emailRef = useRef();
const passwordRef = useRef();

<input ref={emailRef} type="email" />
<input ref={passwordRef} type="password" />

Ustawianie fokusu podczas montowania

useRef jest często używany do automatycznego ustawiania fokusu na polu podczas montowania komponentu. Referencję należy odczytać wewnątrz useEffect po zamontowaniu komponentu.
const inputRef = useRef();
useEffect(() => {
  inputRef.current?.focus();
}, []);
<input ref={inputRef} />

Niekontrolowane pola a walidacja

Walidacja niekontrolowanych pól wymaga imperatywnego odczytania wartości podczas wysyłania formularza. W przypadku walidacji w czasie rzeczywistym jest to bardziej kłopotliwe niż użycie pól kontrolowanych. Gdy potrzebują Państwo natychmiastowej informacji zwrotnej, należy preferować pola kontrolowane.

Kompromis związany z useRef

Niekontrolowane pola pozwalają uniknąć ponownych renderowań, ale oznacza to rezygnację z reaktywności Reacta. Nie można w czasie rzeczywistym warunkowo renderować elementów na podstawie wartości pola bez odczytania referencji i ręcznej aktualizacji stanu.

Szybkie sprawdzenie

Którego propa należy użyć do ustawienia wartości początkowej niekontrolowanego pola w React?

Podsumowanie

Niekontrolowane pola używają referencji do odczytywania wartości na żądanie. Do ustawiania wartości początkowych należy używać defaultValue, podczas wysyłania formularza odczytywać ref.current.value, a resetować pole przez wyczyszczenie wartości referencji lub zmianę key.

Następnie

Następna lekcja: **Pole pliku i odczytywanie danych pliku** — nauczą się Państwo obsługiwać pola plików oraz odczytywać metadane i dane obrazów za pomocą FileReader.

Często zadawane pytania

Czy lekcja „Niekontrolowane pola wejściowe z useRef” jest bezpłatna?

Tak — pełny tekst „Niekontrolowane pola wejściowe z useRef” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Niekontrolowane pola wejściowe z useRef”?

Uzyskuj dostęp do wartości pól DOM za pomocą refów zamiast stanu w prostych formularzach Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć React Academy?

Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Niekontrolowane pola wejściowe z useRef”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?

Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Niekontrolowane pola wejściowe z useRef
  2. Pole wyboru pliku i odczytywanie danych pliku
  3. Interfejs przesyłania plików metodą przeciągnij i upuść
  4. Przesyłanie plików do backendowego API
← Powrót do React Academy