Notistack — отличный инструмент для работы с уведомлениями. Иногда мы создаем отдельный js-файл для вызова api. Но обычно он недоступен вне компонентов react.
Сегодня мы решим эту проблему. Для этого нам нужно выполнить несколько шагов.
Я показываю это на примере NextJS
JavaScript
import { useSnackbar } from 'notistack';
let useSnackbarRef;
export const SnackbarUtilsConfigurator = () => {
useSnackbarRef = useSnackbar();
return null;
};
export default {
success(msg) {
this.toast(msg, 'success');
},
warning(msg) {
this.toast(msg, 'warning');
},
info(msg) {
this.toast(msg, 'info');
},
error(msg) {
this.toast(msg, 'error');
},
toast(msg, variant = 'default') {
useSnackbarRef.enqueueSnackbar(msg, { variant, autoHideDuration: 1500 });
},
};
TypeScript
import { useSnackbar, VariantType, WithSnackbarProps } from 'notistack'
let useSnackbarRef: WithSnackbarProps
export const SnackbarUtilsConfigurator: React.FC = () => {
useSnackbarRef = useSnackbar()
return null
}
export default {
success(msg: string) {
this.toast(msg, 'success')
},
warning(msg: string) {
this.toast(msg, 'warning')
},
info(msg: string) {
this.toast(msg, 'info')
},
error(msg: string) {
this.toast(msg, 'error')
},
toast(msg: string, variant: VariantType = 'default') {
useSnackbarRef.enqueueSnackbar(msg, { variant })
}
}
Импортируйте SnackbarProvider из notistack
Импортируйте функцию SnackbarUtilsConfigurator в _app.js.
Пример
Спасибо за чтение
Связь со мной : Github LinkedIn