type DataError = {
isLoading: false;
isError: true;
data: undefined;
};
type DataLoading = {
isLoading: true;
isError: false;
data: undefined;
};
type DataSuccess = {
isLoading: false;
isError: false;
message: string;
};
type DataResult = DataError | DataLoading | DataSuccess;
const useUser = () => {
return useQuery({
queryKey: ['user'],
queryFn: () => {
return { id: '123', name: 'test' };
},
});
};
const useUserData = (): DataResult => {
const { data, isLoading, isError } = useUser();
return useMemo(() => {
if (isError) {
return { isLoading, isError, data: undefined };
}
if (isLoading) {
return { isLoading, isError, data: undefined };
}
return {
isLoading: false,
isError: false,
message: `It's user ${data.name}!`,
};
}, [data, isError, isLoading]);
};
type DataError = {
isLoading: false;
isError: true;
data: undefined;
};
type DataLoading = {
isLoading: true;
isError: false;
data: undefined;
};
type DataSuccess = {
isLoading: false;
isError: false;
message: string;
};
type DataResult = DataError | DataLoading | DataSuccess;
const useUser = () => {
return useQuery({
queryKey: ['user'],
queryFn: () => {
return { id: '123', name: 'test' };
},
});
};
const useUserData = (): DataResult => {
const { data, isLoading, isError } = useUser();
return useMemo(() => {
if (isError) {
return { isLoading, isError, data: undefined };
}
if (isLoading) {
return { isLoading, isError, data: undefined };
}
return {
isLoading: false,
isError: false,
message: `It's user ${data.name}!`,
};
}, [data, isError, isLoading]);
};