npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rtk-query-hooked

v1.0.1

Published

Wrapper library for Redux Toolkit Query with useful hooks and types.

Downloads

5

Readme

rtk-query-hooked

Easily reactable, fully typed.

rtk-query-hooked is a utility library for simplifying the use of RTK Query hooks by providing you with a tiny layer of abstracion for query/mutation events and types.

Passed events do not need to be memoized as they are always fresh internally, forget about useCallback and useEffect problems when reacting to a query/mutation state, handlers for events can be passed without dependency worries, making the API similar to tanstack/react-query.

Be able to easily infer data that an RTK Query hook returns with UseQueryData and UseMutationData types. (Can be difficult to achieve otherwise)

Table of Contents

Installation

npm install rtk-query-hooked

Usage

useQuery

The useQuery hook is a wrapper around the RTK Query hook that provides additional event handlers and simplifies the usage.

Import

import { useQuery } from 'rtk-query-hooked';

Usage Example

import { useQuery } from 'rtk-query-hooked';
import { useGetSomethingQuery } from './api';
import { toast } from './toast';

const MyComponent = () => {
  const { data, error, isLoading } = useQuery({
    hook: useGetSomethingQuery,
    request: { id: 1 },
    onSuccess: (data) => toast.success('Fetched ' + data.name + ' successfully.'),
    onError: (error) => toast.error('Error fetching data: ', error.message),
  });

  if (isLoading) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return data ? <pre>Updated Data: {JSON.stringify(data, null, 2)}</pre> : null
};

useMutation

The useMutation hook is a wrapper around the RTK Query mutation hook that provides additional event handlers and simplifies the usage.

Import

import { useMutation } from 'rtk-query-hooked';

Usage Example

import { useMutation } from 'rtk-query-hooked';`
import { useUpdateSomethingMutation } from './api';`
import { toast } from './toast';`

const MyComponent = () => {
  const [trigger, { data, error, isLoading }] = useMutation({
    hook: useUpdateSomethingMutation,
    onSuccess: (data) => toast.success('Updated ' + data.name + ' successfully.'),
    onError: (error) => toast.error('Error fetching data: ', error.message),
  });`

  const handleUpdate = () => {
    trigger({ id: 1, value: 'newValue' });
  };

  if (isLoading) return <div>Updating...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return (
    <div>
      <button onClick={handleUpdate}>Update</button>
      {data ? <pre>Updated Data: {JSON.stringify(data, null, 2)}</pre>} : null
    </div>
  );
};

API

useQuery

Props

  • hook: The RTK Query hook to be used.
  • request: The request parameters for the query.
  • options: (Optional) Additional options for the query.
  • onSettled: (Optional) Callback when the query is settled.
  • onSuccess: (Optional) Callback when the query is successful.
  • onError: (Optional) Callback when the query fails.

Returns

The same response object returned by the RTK Query hook.

useMutation

Props

  • hook: The RTK Query mutation hook to be used.
  • onSettled: (Optional) Callback when the mutation is settled.
  • onSuccess: (Optional) Callback when the mutation is successful.
  • onError: (Optional) Callback when the mutation fails.

Returns

An array containing the trigger function and the response object from the RTK Query mutation hook.

Types

UseQueryProps

type UseQueryProps<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {
  hook: RTKQueryHook<QueryArg, BaseQuery, ResultType>;
  request:
    | Parameters<RTKQueryHook<QueryArg, BaseQuery, ResultType>>[0]
    | (() => Parameters<RTKQueryHook<QueryArg, BaseQuery, ResultType>>[0]);
  options?:
    | Parameters<RTKQueryHook<QueryArg, BaseQuery, ResultType>>[1]
    | (() => Parameters<RTKQueryHook<QueryArg, BaseQuery, ResultType>>[1]);
} & RTKHookedEvents<UseQueryData<QueryArg, BaseQuery, ResultType>>;

UseMutationProps

type UseMutationProps<QueryArg, BaseQuery extends BaseQueryFn, ResultType> = {
  hook: RTKMutationHook<QueryArg, BaseQuery, ResultType>;
} & RTKHookedEvents<UseMutationData<QueryArg, BaseQuery, ResultType>>;

RTKQueryHook

A type for the useQuery hook from RTK Query with generics and advanced typing.

RTKMutationHook

A type for the useMutation hook from RTK Query with generics and advanced typing.

UseQueryData

The data returned by the useQuery hook.

UseMutationData

The data returned by the useMutation hook.

RTKHookedEvents

A type for event handlers: onSettled, onSuccess, and onError.

License

MIT