invalidateQueries()
Phương thức
invalidateQueries()sẽ refetch (gửi refetch request network) cho những queries mà cóqueryKeytương ứng do ta chỉ định hoặc refetch tất cả các queries đang có trong cache.Phương này
return Promisecho nên có thể đi kèm vớiawait
Cấu hình
queryKey
Array
Chỉ định những queries có queryKey tương đối khớp với queryKey ta chỉ định mới bị refetch
exact
Boolean
true: chỉ refetch những queries có queryKey khớp chính xác tuyệt đối với queryKey ta chỉ định
predicate
Function
Là một hàm return Boolean chỉ định những queries nào thỏa mãn điều kiện mới được refetch. Dùng hàm này rồi thì thôi không dùng queryKey nữa.
Ví dụ:
// Refetch lại tất cả các query đang có trong cache
queryClient.invalidateQueries()
// Refetch lại tất cả các query mà có phần tử đầu tiên trong mảng queryKey là 'todos'
queryClient.invalidateQueries({ queryKey: ['todos'] })Về query matching. Xem ví dụ sau đây:
import { useQuery, useQueryClient } from '@tanstack/react-query'
// Lấy instance QueryClient từ context
const queryClient = useQueryClient()
queryClient.invalidateQueries({ queryKey: ['todos'] })
// Tất cả 2 query sau sẽ bị refetch do đều có phần tử đầu tiên của mảng queryKey là 'todos'
const todoListQuery = useQuery({
queryKey: ['todos'],
queryFn: fetchTodoList,
})
const todoListQuery = useQuery({
queryKey: ['todos', { page: 1 }],
queryFn: fetchTodoList,
})Để khắc phục vấn đề này, ta thêm
exact: truetrong cấu hìnhinvalidateQueries():
Thay vì chỉ định một
queryKeycụ thể để refetch, ta có thể sử dụngpredicatetrong cấu hìnhinvalidateQueries()để chỉ định những query nào thỏa mãn điều kiện mới được refetch. Ví dụ:
Phương thức
invalidateQueries()phù hợp khi sử dụng vớiuseMutation(), nó sẽ tự động cập nhật dữ liệu hiển thị ở UI ngay lập tức khi mutation thực thi thành công. Ví dụ:
Last updated