在实习中遇到了message组件重复弹出的问题。当一个页面请求多个接口时,message放在响应拦截器里,如果多个接口返回异常或者错误时,message组件会多次弹出。
这里对element-ui 的message组件做一层封装,防止此类问题出现
src/utils/resetMessage.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import { Message } from 'element-ui';
let messageInstance = null; const resetMessage = (options) => { if (messageInstance) { messageInstance.close() } messageInstance = Message(options) }; ['error', 'success', 'info', 'warning'].forEach(type => { resetMessage[type] = options => { if (typeof options === 'string') { options = { message: options } } options.type = type return resetMessage(options) } })
export const message = resetMessage
|
调用:
1 2 3 4 5 6 7 8
| import { message } from "@/utils/resetMessage"
message({ message: error.response.data.message, type: "error", duration: 5 * 1000, showClose: true });
|