【发布时间】:2022-01-27 14:32:48
【问题描述】:
我正在使用 React-query 进行 API 调用。我想知道是否有办法以懒惰的方式调用查询。
表示仅在查询参数更改时才调用查询。
这是我目前拥有的;我正在使用带有“useEffect”的hack,如果recipeName发生变化,则运行refetch函数。
export const searchRecipeByName = async (recipeName: string) => {
return await api.get(
`/recipes/complexSearch?apiKey=${process.env.NEXT_PUBLIC_SPOONACULAR_API_KEY}&query=${recipeName}&addRecipeInformation=true&fillIngredients=true`
);
};
const [recipeName, setRecipeName] = useState("");
const { data, refetch } = useQuery(
"homePageSearchQuery",
() => searchRecipeByName(recipeName),
{ enabled: false }
);
// HACK
useEffect(() => {
if (!!recipeName) {
refetch();
}
}, [recipeName]);
const handleOnSearchSubmit = async (recipeSearch: RecipeSearch) => {
setRecipeName(recipeSearch.search);
};
最好在“handleOnSearchSubmit”函数中调用查询。
我可以创建一个自定义的 useLazyQuery 挂钩来处理这个问题,但我想知道 React-query 是否有本地方法来处理这个问题。
【问题讨论】:
标签: javascript reactjs api react-query