Notistack is a notification library which makes it extremely easy to display notifications on your web apps. It is highly customizable and enables you to stack snackbars/toasts on top of one another.
Visit documentation website for demos.
Stacking behaviour | Dismiss oldest when reached maxSnack (3 here) |
---|---|
Use your preferred package manager:
npm install notistack
yarn add notistack
If you're using Material-UI version 4.x.x or lower, download a compatible version of notistack using:
npm install notistack@latest-mui-v4
yarn add notistack@latest-mui-v4
1: Wrap your app inside a SnackbarProvider
component: (see docs for a full list of available props)
Note: If you're using material-ui ThemeProvider
, make sure SnackbarProvider
is a child of it.
import { SnackbarProvider } from 'notistack';
<SnackbarProvider maxSnack={3}>
<App />
</SnackbarProvider>
2: Export any component that needs to send notification using withSnackbar
. By doing this, you'll have access to methods enqueueSnackbar
and closeSnackbar
, where the former can be used to send snackbars.
import { withSnackbar } from 'notistack';
class MyComponent extends Component {
handleNetworkRequest = () => {
fetchSomeData()
.then(() => this.props.enqueueSnackbar('Successfully fetched the data.'))
.catch(() => this.props.enqueueSnackbar('Failed fetching data.'));
};
render(){
//...
};
};
export default withSnackbar(MyComponent);
2 (alternative): You can use useSnackbar
hook in your functional components as well.
import { useSnackbar } from 'notistack';
const MyButton = () => {
const { enqueueSnackbar, closeSnackbar } = useSnackbar();
const handleClick = () => {
enqueueSnackbar('I love hooks');
};
return (
<Button onClick={handleClick}>Show snackbar</Button>
);
}
Visit documentation website
to see all the demos.
Or play with a minimal working example: codesandbox
notistack is compatible with state management libraries such as Redux and Mobx. See notistack documentation for more info.
Open an issue and your problem will be solved.
Hossein Dehnokhalaji