cancelQueries()

  • Phương thức cancelQueries() dùng để hủy bỏ khi đang thực hiện dở query. Được dùng khi component unmounted (tức khi người dùng chuyển trang khác trong khi query đang thực hiện dở thì hủy bỏ không thực hiện query đó nữa, giúp tối ưu hiệu năng).

  • Phương thức này được dùng chủ yếu ở cleanup function trong useEffect()

Cấu hình

Config
Type
Explaination

queryKey

Array

Chỉ định những queries có queryKey tương đối khớp với queryKey ta chỉ định mới bị cancel

exact

Boolean

true: chỉ cancel 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 cancel. Dùng hàm này rồi thì thôi không dùng queryKey nữa.

  • Ví dụ:

import { useQuery, useQueryClient } from "@tanstack/react-query";
import "./styles.css";
import axios from "axios";
import { useEffect } from "react";

interface Task {
  name: string;
}

const api = axios.create({
  baseURL: "https://6404cc9280d9c5c7bad0e2f2.mockapi.io/api/v1/"
});

const getAllTasks = async (querySignal?: AbortSignal) => {
  const { data } = await api.get<Task[]>("tasks", { signal: querySignal });
  return data;
};

export default function App() {
  const queryClient = useQueryClient();
  const { data: taskList } = useQuery({
    queryKey: ["todos"],
    queryFn: ({ signal }) => getAllTasks(signal)
  });

  useEffect(() => {
    return () => {
      queryClient.cancelQueries({ queryKey: ["todos"] });
    };
  }, [queryClient]);

  return (
    <div>
      {taskList?.map((item, index) => (
        <p key={index}>{item.name}</p>
      ))}
    </div>
  );
}

Last updated