mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-02 13:28:49 +00:00
Improve useInstance hook (#5710)
- Allow use without primary key - Allow default value to be customizedr
This commit is contained in:
parent
9705521cd2
commit
80a170d93c
@ -17,23 +17,29 @@ export function useInstance({
|
|||||||
endpoint,
|
endpoint,
|
||||||
pk,
|
pk,
|
||||||
params = {},
|
params = {},
|
||||||
|
defaultValue = {},
|
||||||
|
hasPrimaryKey = true,
|
||||||
refetchOnMount = false,
|
refetchOnMount = false,
|
||||||
refetchOnWindowFocus = false
|
refetchOnWindowFocus = false
|
||||||
}: {
|
}: {
|
||||||
endpoint: ApiPaths;
|
endpoint: ApiPaths;
|
||||||
pk: string | undefined;
|
pk?: string | undefined;
|
||||||
|
hasPrimaryKey?: boolean;
|
||||||
params?: any;
|
params?: any;
|
||||||
|
defaultValue?: any;
|
||||||
refetchOnMount?: boolean;
|
refetchOnMount?: boolean;
|
||||||
refetchOnWindowFocus?: boolean;
|
refetchOnWindowFocus?: boolean;
|
||||||
}) {
|
}) {
|
||||||
const [instance, setInstance] = useState<any>({});
|
const [instance, setInstance] = useState<any>(defaultValue);
|
||||||
|
|
||||||
const instanceQuery = useQuery({
|
const instanceQuery = useQuery({
|
||||||
queryKey: ['instance', endpoint, pk, params],
|
queryKey: ['instance', endpoint, pk, params],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
if (pk == null || pk == undefined || pk.length == 0) {
|
if (hasPrimaryKey) {
|
||||||
setInstance({});
|
if (pk == null || pk == undefined || pk.length == 0) {
|
||||||
return null;
|
setInstance(defaultValue);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let url = apiUrl(endpoint, pk);
|
let url = apiUrl(endpoint, pk);
|
||||||
@ -48,12 +54,12 @@ export function useInstance({
|
|||||||
setInstance(response.data);
|
setInstance(response.data);
|
||||||
return response.data;
|
return response.data;
|
||||||
default:
|
default:
|
||||||
setInstance({});
|
setInstance(defaultValue);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setInstance({});
|
setInstance(defaultValue);
|
||||||
console.error(`Error fetching instance ${url}:`, error);
|
console.error(`Error fetching instance ${url}:`, error);
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user