1.0.0 • Published 5 years ago

loadable-hook v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
5 years ago

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