gpt4 book ai didi

javascript - 如何仅在第一次点击时通过 react-query 获取数据,然后在后续点击时禁用重新获取

转载 作者:行者123 更新时间:2023-12-05 03:25:02 33 4
gpt4 key购买 nike

我在实现表单时遇到了一个问题,其中 data 在 select 中使用,通过 react-query 从数据库中检索,应该只在单击输入时检索一次,以及随后的单击不应导致重新获取

如何以干净的方式做到这一点?

钩子(Hook):

export const useUnitOfMeasureSelectData = ({
queryPageIndex,
queryPageSize,
queryFilters,
enabled,
refetchOnWindowFocus,
}) => {
return useQuery(
["unitofmeasure-list", queryPageIndex, queryPageSize, queryFilters],
() => fetchItemData(queryPageIndex, queryPageSize, queryFilters),
{
keepPreviousData: true,
staleTime: 60000,
enabled,
refetchOnWindowFocus,
select: (data) => {
const categories = data.data.results.map((obj) => ({
value: obj.id,
label: obj.name,
}));
return categories;
},
}
);
};

在组件中调用 onClick={()=>refetch()} 在每次点击时重新获取数据。

  const {
data: unitOfMeasureSelectData = [],
refetch: refetchUnitOfMeasureSelectData,
} = useUnitOfMeasureSelectData({
queryPageIndex: queryPageIndex,
queryPageSize: queryPageSize,
queryFilters: filterString,
enabled: false,
refetchOnWindowFocus: false,
});

最佳答案

看起来你想要一个具有无限陈旧时间的惰性查询:

const [enabled, setEnabled] = useState(false)

useQuery(key, fn, { enabled, staleTime: Infinity })

然后,当您单击输入时,调用 setEnabled: true。无限的陈旧时间确保查询始终被认为是新鲜的,因此不会再发生后台重新获取。

关于javascript - 如何仅在第一次点击时通过 react-query 获取数据,然后在后续点击时禁用重新获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72135796/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com