/** * 带主题等上下文的、可全局使用的message api * toco-ui/antd 组件库的message无法直接全局使用,主题上下文会丢失 */ import { message as tocoMessage } from '@toco-design/components'; type Message = ReturnType[0]; class GlobalMessage { private static instance: GlobalMessage; private message: Message; private constructor() { this.message = tocoMessage; } public static getInstance(): GlobalMessage { if (!GlobalMessage.instance) { GlobalMessage.instance = new GlobalMessage(); } return GlobalMessage.instance; } public setMessage(message: Message) { this.message = message; } public success(content: string, duration?: number, onClose?: () => void) { this.message.success(content, duration, onClose); } public error(content: string, duration?: number, onClose?: () => void) { this.message.error(content, duration, onClose); } public info(content: string, duration?: number, onClose?: () => void) { this.message.info(content, duration, onClose); } public warning(content: string, duration?: number, onClose?: () => void) { this.message.warning(content, duration, onClose); } public loading(content: string, duration?: number, onClose?: () => void) { this.message.loading(content, duration, onClose); } } const globalMessage = GlobalMessage.getInstance(); export default globalMessage;