本文共 2283 字,大约阅读时间需要 7 分钟。
notistack 是 React 下基于 Material UI 的SnackBar 组件的高级封装,用来实现多个消息条的显示。它之所以备受欢迎,是因为其简单易用且功能丰富,能够满足大多数页面的消息显示需求,同时避免了为每个页面手动导入 Material UI 原生组件的麻烦。
npx create-react-app notistackdemo
cd notistackdemosudo npm install @material-ui/core --savesudo npm install @material-ui/icons --savesudo npm install notistack --save
import React from 'react';import ReactDOM from 'react-dom';import './index.css';import App from './App';import * as serviceWorker from './serviceWorker';import { SnackbarProvider } from 'notistack';ReactDOM.render(, document.getElementById('root'));
import React from 'react';import Button from '@material-ui/core/Button';import { useSnackbar } from 'notistack';function App() { const { enqueueSnackbar } = useSnackbar(); const handleClick = (event) => { enqueueSnackbar('消息内容', { variant: 'success' }); }; return ();}export default App;
// src/NotistackWrapper.jsconst MAX_SNACKBAR = 3;const AUTO_HIDE_DURATION = 3000;const POSITION = { vertical: 'bottom', horizontal: 'left' };export default function NotistackWrapper({ children }) { return ({children} );}
npm install react-device-detect --save
const handleClick = (event) => { event.preventDefault(); enqueueSnackbar('消息内容', { variant: 'success', onClose: () => console.log('消息条关闭了') });};
// src/NotistackWrapper.jsimport IconButton from '@material-ui/core/IconButton';import CloseIcon from '@material-ui/icons/Close';export default NotistackWrapper { const onClickDismiss = (key) => { notistackRef.current.closeSnackbar(key); }; return ();}( onClickDismiss(key)} > )} > {children}
notistack 是一个功能强大的消息条组件,能够在 React 应用中无缝实现多个消息条的显示。通过简单的配置,可以实现消息条的定位、定时自动隐藏以及自定义样式等功能。在实际使用中,建议谨慎使用闭包回调函数,并结合 Material UI 统一风格进行界面设计,以提升用户体验。
src/index.js
中保证 SnackbarProvider
正确嵌入。react-device-detect
来判断设备类型。转载地址:http://ltpyk.baihongyu.com/