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

1.0.0 • Public • Published

loadable-hook

React hook for Loadable

Note: This is using the new React Hooks API Proposal which is subject to change until React 16.7 final.

You'll need to install react, react-dom, etc at ^16.7.0-alpha.0

Install

yarn add loadable-hook

Usage

const sleep = time => () => new Promise(done => setTimeout(done, time));

function App() {
  const [{ loading, error }, onClick] = useLoadable(sleep(500));

  return (
    <React.Fragment>
      <pre>
        error: {JSON.stringify(error)}
        <br />
        loading: {JSON.stringify(loading)}
      </pre>
      <button onClick={onClick}>{loading ? "Loading..." : "Load"}</button>
    </React.Fragment>
  );
}

Using delayMs

Sometimes async functions will be cached and the function will return too quickly resulting in a flicker. To mitigate that, you can pass an optional { delayMs } argument to useLoadable

const sleep = () => new Promise(done => done());

function App() {
  // this will take atleast 300ms to resolve
  const [{ loading, error }, onClick] = useLoadable(sleep, { delayMs: 300 });

  return (
    <button onClick={onClick}>{loading ? "Loading..." : "Load"}</button>
  );
}

Edit React Hooks Demo

Package Sidebar

Install

npm i loadable-hook

Weekly Downloads

2

Version

1.0.0

License

MIT

Unpacked Size

4.36 kB

Total Files

6

Last publish

Collaborators

  • hanford