Nâng CaoReact iconReact

useTransition hook dùng để làm gì?

useTransition (React 18) cho phép đánh dấu state update là non-urgent, React có thể interrupt và ưu tiên urgent updates trước.

  • Trả về [isPending, startTransition].
  • Dùng khi filtering danh sách lớn, heavy re-renders mà không muốn block UI.
tsx
const SearchPage = () => {
  const [query, setQuery] = useState('')
  const [results, setResults] = useState<string[]>([])
  const [isPending, startTransition] = useTransition()

  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    // urgent: cập nhật input ngay lập tức
    setQuery(e.target.value)

    // non-urgent: React có thể defer để giữ UI responsive
    startTransition(() => {
      setResults(heavyFilter(e.target.value))
    })
  }

  return (
    <>
      <input value={query} onChange={handleChange} placeholder="Search..." />
      {isPending && <span>Filtering...</span>}
      <ul>{results.map(r => <li key={r}>{r}</li>)}</ul>
    </>
  )
}

Xem toàn bộ React cùng filter theo level & chủ đề con.

Mở danh sách React