1.1.0 • Published 2 months ago

react-query-simple v1.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

react-query-simple README.md

Introduction

react-query-simple is a lightweight npm package designed to streamline the process of working with the API layer in React applications. This package addresses the common challenge of writing repetitive boilerplate code and managing concerns such as caching, requesting, and accessing data. Leveraging the power of React Query, react-query-simple simplifies the development experience by providing a set of ready-to-use hooks generated from a single function call.

Features

  • Reduced Boilerplate: Automate repetitive tasks related to API calls, focusing on your application logic instead.
  • Flexibility: Change the configuration as needed to match your API structure and requirements.
  • Easy Cache Invalidation: With structured and predictable query keys, invalidating the cache becomes straightforward.

Installation

npm install react-query-simple

Usage

Get ready to use React Query hooks to cover all your needs:

import { reactQuerySimple } from 'react-query-simple';

export const {
  useGetProductsQuery,
  useGetProductQuery,
  useCreateProductMutation,
  useDeleteProductMutation,
  useUpdateProductMutation,
} = reactQuerySimple({
  name: "product",
  baseUrl: "https://dummyjson.com",
});

And use it in your React components:

const { isPending, isLoading, isFetching, isError, error, data } = useGetProductsQuery();
const { data, error, isFetching } = useGetProductQuery(productId);
const createMutation = useCreateProductMutation();
const updateMutation = useUpdateProductMutation();
const deleteMutation = useDeleteProductMutation();

This is a basic usage. For more advanced cases you could modify generated hooks.

Editing URL Parameters

Modify API request URLs on the fly using useEditParams. This hook allows you to append base URLs to your endpoints dynamically.

const useEditParams: UseEditParams = () => {
  const { params } = useParamsContext();

  return {
    editUrl: (url: EditUrlArg) => "https://dummyjson.com" + url.baseUrl,
    keyParams: params,
  };
}

Custom Fetching Data

const useFetch: UseFetch = () => {
  const {token} = useAuth();
  return async function (input: RequestInfo | URL, init?: RequestInit | undefined): Promise<Response> {
    const authOptions = {
      ...init,
      headers: {
        ...init?.headers,
        'Authorization': `Bearer ${token}`,
      },
    };
    return fetch(input, authOptions);
  };
}

Use modified factory

Just provide reactQuerySimple with a custom URL editor and modified fetch.

export const {
  useGetPostsQuery,
  useGetPostQuery,
  useCreatePostMutation,
  useUpdatePostMutation,
  useDeletePostMutation,
} = reactQuerySimple<Post, "post", ListPostsResponse>({
  name: "post",
  baseUrl: "",
  useEditParams,
  useFetch,
});

Contributing

Contributions are welcome! Please submit a pull request or open an issue if you have suggestions for improvements or have identified bugs.

License

MIT License - Askhat Assilbekov

1.1.0

2 months ago

1.0.18

3 months ago

1.0.17

3 months ago

1.0.16

3 months ago

1.0.9

3 months ago

1.0.8

3 months ago

1.0.7

3 months ago

1.0.6

3 months ago

1.0.5

3 months ago

1.1.0-beta.2

2 months ago

1.1.0-beta.1

2 months ago

1.1.0-beta.0

2 months ago

1.0.11

3 months ago

1.0.10

3 months ago

1.0.15

3 months ago

1.0.14

3 months ago

1.0.13

3 months ago

1.0.12

3 months ago

1.0.4

3 months ago

1.0.3

3 months ago

1.0.2

3 months ago

1.0.1

3 months ago

1.0.0

3 months ago