Banner 1
Banner 2
hero

Phạm Văn Tú

4518 thành viên

  1. Trang chủ /
  2. Reactjs & Nextjs /
  3. Cùng tìm hiểu React Query là gì nghen

Cùng tìm hiểu React Query là gì nghen

Hello mấy ae bài viết là bài đầu tiên trong chuỗi React Query cùng TúPêVê nghen. Gét Gô thuiiii

TanStack Query là cái tên gọi mới hay có thể gọi React Query là thư viện giúp quản lý các state bất đồng bộ như data từ api

Nó có ưu điểm gì

Quản lý cache data và cập nhật cực kỳ đơn giản

Không dùng global state, reducer để quản lý, không khó hiểu như redux

Có khả năng tương thích và mở rộng với mọi use-case gặp trong thực tế

Vậy nó dùng gì để gọi api

Tanstack Query không đảm nhận việc gọi API, việc gọi API sẽ thực hiện thông qua các thư viện bạn dùng như axios, fetch API. Còn Tanstack Query chỉ đảm nhận việc quản lý data và trigger gọi api khi cần thiết thôi

Như cách thông thường mình dùng useEffect để call api thì sao hè. Mình vd đoạn code mẫu dưới nhé

const [students, setStudents] = useState([])
const [isLoading, setIsLoading] = useState(false)

  useEffect(() => {
    setIsLoading(true)
    getStudents(page, limit)
      .then((res) => {
        setStudents(res.data)
      })
      .finally(() => {
        setIsLoading(false)
      })
  }, [])

Với cách này khá dài dòng chúng ta phải set đi set lại state rất là mệt. Còn với react query thì tương đối gọn hơn với code demo mẫu ở dưới

const { data, isLoading} = useQuery({
    queryKey: ['students', page],
    queryFn: () => getStudents(page, LIMIT)
})
//page đặt trong queryKey kiểu như devdependency trong useEffect vậy khi page thay đổi nó sẽ trigger chạy lại hàm getStudents cho chúng ta data mới

Thấy gọn quá hè, có được data, isLoading mà không cần phải cái useEffect dài dòng nữa =))

Query Key là gì : Nó là 1 cái key định danh cho cái query của mình và React Query nó sẽ quản lý việc query caching dựa trên Query keys của mình. Nó có thể là 1 mảng hoặc 1 số hoặc cái gì cũng được miễn sao để người khác nhìn vào biết được query của mình có nhiệm vụ gì

Query Functions: Nó là 1 function return về promise, promise này có thể return về resolve hoặc error

hero