For a cleaner architecture (especially in large apps), wrap your application or a section in LoadingBarContainer. This provides a context that allows any child component to control the loading bar using the useLoadingBar hook without passing refs down manually.
Note: useLoadingBar must be used within a component that is a child of LoadingBarContainer.
import { LoadingBarContainer, useLoadingBar } from 'react-top-loading-bar';
const ControlPanel = () => {
// Access methods via hook
const { start, complete, increase } = useLoadingBar();
return (
<div>
<button onClick={() => start('continuous')}>Start</button>
<button onClick={() => increase(10)}>Add 10%</button>
<button onClick={complete}>Finish</button>
</div>
);
};
const App = () => (
<LoadingBarContainer props={{ color: 'blue' }}>
<ControlPanel />
</LoadingBarContainer>
);