react-hook-list
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

react-hook-list

A set of React hooks to make life easier.

useTimeout

import { useTimeout } from 'react-hook-list';

useTimeout(callback: CallbackFn, ms?: number): [CancelFn, RestartFn]

React-safe wrapper around setTimeout()

const [cancel, restart] = useTimeout(
    () => console.log('callback!'),
    5000
);

return (
    <>
      <button onClick={restart}>Restart timer</button>
      <button onClick={cancel}>Cancel timer</button>
    <>
)

Calling cancel() clears any in-progress timer.

Calling restart() restarts the timer - any in-progress timer is cancelled.

Passing null or undefined as the callback triggers a single re-render when the timer fires.

// this will force the component to re-render after 5 seconds
useTimeout(null, 5000);

useInterval

import { useInterval } from 'react-hook-list'

useInterval(callback: CallbackFn, ms?: number): [CancelFn, RestartFn]

React-safe wrapper around setInterval()

const [cancel, restart] = useInterval(
    () => console.log('callback!'),
    2000
);

return (
    <>
      <button onClick={restart}>Restart timer</button>
      <button onClick={cancel}>Cancel timer</button>
    <>
)

Calling cancel() stops any in-progress timer.

Calling restart() restarts the timer - any in-progress timer is cancelled.

Passing null or undefined as the callback triggers a re-render each time the timer fires.

// this will force the component to re-render every two seconds
useInterval(null, 2000);

Simple Clock

import React from 'react';
import { useInterval } from 'react-hook-list';

export const SimpleClock = () => {
  useInterval(null, 1000);
  return <>{new Date().toLocaleTimeString()}</>;
};

useAPI

import { useAPI } from 'react-hook-list'

useAPI<T>(url: string | URL): [data: T, error: Error, isLoading: boolean, refresh: Function]

Simple wrapper around a React-safe call to a JSON API.

type MyList = {
  values: number[];
};

const [data, error, isLoading, refresh] = useAPI<MyList>(
  'https://example.com/api/get-list'
);

console.log({
  data,
  error,
  isLoading,
});

return (
  <>
    <button onClick={refresh}>Refresh</button>
  </>
);

Combine with useInterval to poll an API endpoint:

type MyList = {
  values: number[];
};

const [data, error, isLoading, refresh] = useAPI<MyList>(
  'https://example.com/api/get-list'
);

useInterval(refresh, 10e3);

console.log({
  data,
  error,
  isLoading,
});

Readme

Keywords

Package Sidebar

Install

npm i react-hook-list

Weekly Downloads

0

Version

1.0.3

License

MIT

Unpacked Size

8.8 kB

Total Files

10

Last publish

Collaborators

  • adelphes