import { Message } from 'element-ui'; import MessageType from 'element-ui/packages/message'; let messageInstance: MessageType = null; const closeMsg = (message: MessageType) => { message.singleTimer = setTimeout(() => { message.singleTimer && clearTimeout(message.singleTimer); message.close(); messageInstance = null; }, 3000); }; const singleMessage: MessageType = (options: any) => { if ( messageInstance && (messageInstance.message !== options.message || messageInstance.type !== options.type) ) { messageInstance.close(); messageInstance = Message({ ...options, duration: 0 }); return closeMsg(messageInstance); } if (messageInstance) { messageInstance.singleTimer && clearTimeout(messageInstance.singleTimer); return closeMsg(messageInstance); } messageInstance = Message({ ...options, duration: 0 }); closeMsg(messageInstance); }; ['error', 'success', 'info', 'warning'].forEach(type => { singleMessage[type] = options => { if (typeof options === 'string') { options = { message: options, }; } options.type = type; return singleMessage(options); }; }); export default singleMessage;