use-get-data
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

useFetch

A React hook for date fetching based on useSWR

Motivation

The caching granularity of useSWR is relatively coarse, which hinders cache utilization.

For example, in a scenario where a user/list cache is requested first, useSWR cannot utilize the user/list cache when the data for user/<user_id> is needed. It also cannot update the user/list cache when the user/<user_id> cache mutates.

Therefore, based on useSWR, I made some modifications and created this library.

Installation

pnpm install use-get-data

Usage

type ListData<T> = {
  offset: number;
  limit: number;
  records: Array<T>;
  total: number;
};
type User = {
  id: number;
  name: string;
  profile: Record<string, unknown>;
};
const UserList = () => {
  const { data, error, isLoading } = useFetch<ListData<User>>(
    "/api/users",
    fetcher,
    {
      relation: function* (data) {
        for (let i = 0, l = data.records.length; i < l; i += 1) {
          yield {
            path: `records.${i}`,
            cacheKey: `users/${data.records[i].id}`,
          };
        }
      },
    }
  );

  if (error) return "An error has occurred.";
  if (isLoading) return "Loading...";

  return (
    <div>
      {data.records.map((user) => (
        <p>{user.name}</p>
      ))}
    </div>
  );
};

Readme

Keywords

none

Package Sidebar

Install

npm i use-get-data

Weekly Downloads

0

Version

1.1.0

License

MIT

Unpacked Size

135 kB

Total Files

8

Last publish

Collaborators

  • alan.yang