ske*_*law 3 javascript reactjs axios react-query
我在实现表单时遇到一个问题,其中select 中使用的数据(通过 React-query 从数据库检索)只能在单击 input 时检索一次,并且后续单击不应导致 refetch。
如何以干净的方式做到这一点?
钩:
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;
},
}
);
};
Run Code Online (Sandbox Code Playgroud)
onClick={()=>refetch()}在每次点击时调用重新获取数据的组件中。
const {
data: unitOfMeasureSelectData = [],
refetch: refetchUnitOfMeasureSelectData,
} = useUnitOfMeasureSelectData({
queryPageIndex: queryPageIndex,
queryPageSize: queryPageSize,
queryFilters: filterString,
enabled: false,
refetchOnWindowFocus: false,
});
Run Code Online (Sandbox Code Playgroud)
看起来你想要一个具有无限陈旧时间的惰性查询:
const [enabled, setEnabled] = useState(false)
useQuery(key, fn, { enabled, staleTime: Infinity })
Run Code Online (Sandbox Code Playgroud)
然后,当您单击输入时,您会调用setEnabled: true. 无限的陈旧时间确保查询始终被认为是新鲜的,因此不会再发生后台重新获取。
| 归档时间: |
|
| 查看次数: |
4091 次 |
| 最近记录: |