useRef vs useState — dlaczego ref nie renderuje?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
State przechowuje dane wpływające na widok, a jego setter planuje aktualizację UI. Ref przechowuje wartość między renderami, ale zmiana current nie wywołuje renderowania.
JSX
import { useRef } from 'react';
export default function FocusInput() {
const inputRef = useRef(null);
return <>
<input ref={inputRef} aria-label="Imię" />
<button onClick={() => inputRef.current?.focus()}>Ustaw fokus</button>
</>;
}Praktyka: ref przydaje się do elementów DOM i uchwytów timerów.
Pułapka: licznik wyświetlany w UI nie powinien polegać wyłącznie na ref. Nie odczytuję i nie zmieniam arbitralnie ref podczas renderowania.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Powiązane pytania
- C-P06 · Czym różni się useRef od useState? — React, Next.js i frontend
- Zmiana ref.current a renderowanie — React