Skip to content
Snippets Groups Projects
Commit f8f66cbb authored by Chif Gergő's avatar Chif Gergő
Browse files

Delete hooks

parent b5ed2531
No related branches found
No related tags found
2 merge requests!19fix type imports,!8Refactor structure
import { News } from '../types/types';
import useRequest from './useRequest';
import useRestQueries from './useRestQueries';
const useAddNews = () => {
const { post } = useRestQueries();
const request = post<News>('/api/v1/news');
return useRequest<News>({ request });
};
export default useAddNews;
import { News } from '../types/types';
import useRequest from './useRequest';
import useRestQueries from './useRestQueries';
const useGetNewsList = (data?: News[]) => {
const { get } = useRestQueries();
const request = get<News[]>('/api/v1/news');
return useRequest<News[]>({ request, initialData: data });
};
export default useGetNewsList;
import { useCallback, useEffect, useState } from 'react';
import { Refetch, RequestArgs, ResponseData } from './types';
function useRequest<T = any>({ request, initialData }: RequestArgs<T>): [ResponseData<T>, Refetch] {
const [data, setData] = useState(initialData);
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const [fetching, setFetching] = useState(false);
const [requestParams, setRequestParams] = useState({});
const refetch = useCallback((newParams?) => {
setRequestParams(newParams ?? {});
setFetching(true);
}, []);
useEffect(() => {
const fetchData = async () => {
setIsError(false);
setIsLoading(true);
try {
const result = await request(requestParams);
setData(result.data);
} catch (error) {
setIsError(true);
}
setFetching(false);
setIsLoading(false);
};
if (fetching && !isLoading) {
fetchData();
}
}, [request, fetching, isLoading, requestParams]);
return [{ data, isLoading, isError }, refetch];
}
export default useRequest;
import axios, { AxiosRequestConfig } from 'axios';
import { ApiRequest, RequestParams } from './types';
function useRestQueries(
// When a request needs more config like CancelToken, etc.
config?: AxiosRequestConfig,
): Record<string, <Data>(path: string) => ApiRequest<Data>> {
return {
get: <Data>(path: string) => (params: RequestParams) =>
axios.get<Data>(path, { ...config, ...params }),
post: <Data>(path: string) => (params: RequestParams) =>
axios.post<Data>(path, params.body ?? {}, { ...config, ...params }),
put: <Data>(path: string) => (params: RequestParams) =>
axios.put<Data>(path, params.body ?? {}, { ...config, ...params }),
delete: (path: string) => (params: RequestParams) =>
axios.delete(path, { ...config, ...params }),
};
}
export default useRestQueries;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment