QoL fetch api hooks for React
fetch-yo-mama
Fetch API QoL hooks for React.
The request will be automatically aborted if the component is unmounted
Usage
Step – 0
Install the library
yarn add fetch-yo-mama
Step – 1
Wrap the app with FetchProvider and pass
aliases
.
import { FetchProvider } from 'fetch-yo-mama';
import Root from './src/root';
export default function App() {
return (
<FetchProvider
aliases={{
default: {
baseUrl: 'https://jsonplaceholder.typicode.com',
headers: { 'Content-Type': 'application/json' },
},
custom: {
baseUrl: 'https://coolapi.com',
bodyType: 'formdata' // json|formdata|original. default: json
},
}}>
<Root />
</FetchProvider>
);
}
Step – 2
Use the hook:
import { useGet } from 'fetch-yo-mama';
export default function UserList() {
const { error, response: users, request, loading } = useGet('/users');
if (loading) return <p>Loading...</p>;
if (error) return <p>Error Loading Data</p>;
return (
<>
{users.map((u) => (
<p>{u.name}</p>
))}
</>
);
}
Customize request
const { error, response, request, loading } = useGet('/custom', {
fetchAlias: 'custom',
params: {},
headers: {},
loadOnMount: false, // Don't fetch on mount
...anyOtherFetchParam,
});
Other methods
import { usePost, useDelete, usePatch, usePut } from 'fetch-yo-mama';
export default function Component() {
// fetch params
const fetchParams = {
body: {},
params: {},
headers: {},
..anyOtherFetchParam
};
const {
error,
response,
request,
loading,
abortControllerRef, // abortControllerRef.current.abort() to manually abort the request
} = usePost('/user', {
...fetchParams,
});
}
TODO:
- Rewrite to TypeScript