New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@gsts007/react-loading-context

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gsts007/react-loading-context

React Loading Context

  • 1.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

React Loading Context

You can show your loading component anywhere.
And only one loading component is showing at the same time.

Quick Example

const App = () => {
  return (
    <LoadingContextProvider>
      <LoadingContainer>
        <MyLoadingLayer />
      </LoadingContainer>
    </LoadingContextProvider>
  )
}

const SomeComponent = () => {
  const { data, loading, error } = someAsyncAction();
  useAutoLoading(loading);

  ...
};

How to use

0. Install package

yarn add @gsts007/react-loading-context

or

npm install --save @gsts007/react-loading-context

1. Put LoadingContextProvider in your App or index

import { LoadingContextProvider } from '@gsts007/react-loading-context';

ReactDOM.render(
  <React.StrictMode>
    <LoadingContextProvider>
      <App />
    </LoadingContextProvider>
  </React.StrictMode>,
  document.getElementById('root'),
);

2. Setting your loading component

2.1. Use LoadingContainer

LoadingContainer makes your loading component only shows when loading activated.

const App = () => {
  return (
    <>
      ...others

      <LoadingContainer>
        <MyLoadingComponent />
      </LoadingContainer>
    </>
  );
}
2.2. Use useLoading hooks

You can get loading value using useLoading hooks.

const App = () => {
  const loading = useLoading();

  return (
    <>
      ...others

      {loading && <MyLoadingComponent>}
      {/* or <MyLoadingComponent show={loading} /> */}
    </>
  );
};
2.3. Use LoadingConsumer

If you don't want to hooks, you can use LoadingConsumer.

const App = () => {
  return (
    <>
      ...others

      <LoadingConsumer>
        {loading => <MyLoadingComponent show={loading} />}
      </LoadingConsumer>
    </>
  );
};

3. Use loading actions or auto loading

3.1. use useLoadingAction

You can manually activate loading with useLoadingAction.

const { start, stop } = useLoadingAction();

useEffect(() => {
  start();

  const timer = setTimeout(() => {
    stop();
  }, 1000);

  return () => {
    clearTimeout(timer);
    stop();
  };
}, [start, stop]);
3.2 use useAutoLoading

You might have a loading variable if you use redux-thunk, apollo-client, or etc.
then, you can use useAutoLoading for activate and deactivate loading easily.

const { data, loading, error } = useQuery(...);
useAutoLoading(loading);

Don't worry about using multiple loading

React Loading Context use loading counter system.

the loading action start means "increase the loading counter"
and also stop means "decrease the loading counter"
and we activate loading using whether loading counter is 0.

So, We shows loading component when any one loading in progress.

API References

Hooks

useLoading

Get loading activation state

useLoading(): boolean

const loading = useLoading();
useAutoLoading

Automatically activate and deactivate loading using boolean parameter

useAutoLoading(loading: boolean): void

const { data, loading, error } = useSelector(state => state.asyncState);
useAutoLoading(loading);
useLoadingAction

Get actions for loading.
We recommend to use destructuring when use this hook.

useLoadingAction(): {
  start: () => void;
  stop: () => void;
};

const { start, stop } = useLoadingAction();

Utility components

LoadingContainer

Show children when loading activated

LoadingComponent: React.FC

<LoadingComponent>
  This text is showing when loading
</LoadingComponent>
LoadingConsumer
LoadingConsumer: React.VFC<{ children: (loading: boolean) => React.ReactNode }>

<LoadingConsumer>
  {loading => <Modal show={loading}>Loading...</Modal>}
</LoadingConsumer>

Keywords

FAQs

Package last updated on 30 Aug 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc