React-query:如果查询为空,如何避免触发函数调用?

React-query: How to avoid triggering function call if query is empty?

我正在使用 react-query 调用 API。该调用运行良好,每次在输入字段中更新查询值时都会执行该调用。
不幸的是,即使查询为空,它也会触发 API 调用。

例如,当用户加载应用程序时,输入(以及查询)将为空白。

如何在有查询时才触发API调用?

代码

// API call
export async function myQuery(query) {
  try {
    const res = await ax.get("myapiurl", {
      params: { query },
    });
    return res.data;
  } catch {
    return null;
  }
}

// react-query
const { status, data } = useQuery(
  ["myquery", { query }],
  () => myQuery(query)
);

你可以用一个简单的 if 语句来实现:

// apicall
export async function myQuery(query) {
  try {
    const res = await ax.get("myapiurl", {
      params: { query },
    });
    return res.data;
  } catch {
    return null;
  }
}

// react-query
  const { status, data } = useQuery(
    ["myquery", { query }],
    () => {
      if (query) {
        return myQuery(query)
      }
  );

react-query 中有一个 enabled 标志用于这个确切的用例。

使用示例

const { status, data } = useQuery(
  ["myquery", { query }],
  () => myQuery(query).
  { enabled: !!query }
);

Docs for reference