An open API service indexing awesome lists of open source software.

https://github.com/vikramsamak/react-api-utils

A React utility library for making API calls using React Query and Axios, providing context-based configuration and custom hooks for seamless integration.
https://github.com/vikramsamak/react-api-utils

api-calls api-helper async-storage axios context-provider data-fetching http-client react react-library react-query state-management typescript

Last synced: 6 days ago
JSON representation

A React utility library for making API calls using React Query and Axios, providing context-based configuration and custom hooks for seamless integration.

Awesome Lists containing this project

README

        

# React API Utils

A utility library for simplifying API requests in React applications. Built on top of **React Query** and **Axios**, it provides a seamless way to manage API calls and caching with an intuitive context-based setup.

## Features

- 🌐 **Axios Integration**: Customize API calls with ease.
- ⚡ **React Query**: Automatic caching, refetching, and stale data management.
- 📦 **Async Storage Support**: Persisted caching for React Native or browser-based environments.
- 🛠️ **TypeScript Ready**: Fully typed for better developer experience.

## Installation

```bash
npm install react-api-utils
# or
yarn add react-api-utils
```

## Usage

### Setup Provider

Wrap your application with the `ApiHelperProvider` to set up the context and configuration.

```tsx
import React from 'react';
import { ApiHelperProvider } from 'react-api-utils';

const App = () => (



);

export default App;
```

### Using `useApiHelper`

Leverage the `useApiHelper` hook to perform API requests effortlessly.

```tsx
import { useApiHelper } from 'react-api-utils';

const MyComponent = () => {
const { data, isLoading, isError } = useApiHelper({
url: '/endpoint',
method: 'GET',
queryKey: ['endpoint-data'],
});

if (isLoading) return

Loading...

;
if (isError) return

Something went wrong!

;

return

{JSON.stringify(data, null, 2)}
;
};
```

## API

### `ApiHelperProvider`

| Prop | Type | Default | Description |
| ------------------- | -------------------- | ----------- | --------------------------------- |
| `baseURL` | `string` | `undefined` | Base URL for all Axios requests. |
| `axiosConfig` | `AxiosRequestConfig` | `{}` | Custom Axios configuration. |
| `queryClientConfig` | `QueryClientConfig` | `{}` | React Query client configuration. |

### `useApiHelper`

| Option | Type | Description |
| ---------- | ----------------------------------- | ---------------------------------------------- |
| `url` | `string` | API endpoint to fetch data from. |
| `method` | `'GET' , 'POST' , 'PUT' , 'DELETE'` | HTTP method for the request. |
| `queryKey` | `Array` | Unique key for React Query's cache management. |

## Contributing

Contributions are welcome! Feel free to submit issues or pull requests.