实现表单时遇到了一个问题,作为select中使用的数据通过react-query从数据库中检索出来,只有在点击输入框时才应该被检索一次,后续的点击不应该导致重新获取数据。
如何以清洁的方式实现?
钩子:
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 selectFetched = useRef(false)
,在第一次获取后更新为selectFetched.current = false;
- 然后对每个后续的选择点击进行检查? - John Detlefs