</>
⌕
Junior #hooks#useRef#useState

useRef khác useState thế nào? Khi nào dùng ref?

⚡ Trả lời nhanh

useState giữ giá trị giữa các lần render và đổi nó thì trigger re-render. useRef giữ một object mutable ref.current tồn tại suốt vòng đời, đổi ref.current không gây render. Dùng ref cho DOM node, timer id, giá trị không ảnh hưởng UI.

useStateuseRef
Đổi giá trịRe-renderKhông re-render
Cập nhậtQua setter, theo lượtGán trực tiếp ref.current
Dùng choDữ liệu hiển thị trên UIDOM, id timer, giá trị trước đó
function SearchBox() {
  const inputRef = useRef(null);
  const timerRef = useRef();
  const onChange = () => {
    clearTimeout(timerRef.current);
    timerRef.current = setTimeout(() => search(inputRef.current.value), 300);
  };
  return <input ref={inputRef} onChange={onChange} />;
}

Ref cũng dùng được cho input uncontrolled: đọc giá trị khi submit thay vì lưu từng ký tự vào state.

🃏 Ôn bằng flashcard