首页 > 其他分享 >vue+element项目中统一处理接口异常,只提示一次异常信息

vue+element项目中统一处理接口异常,只提示一次异常信息

时间:2023-06-01 11:33:55浏览次数:34  
标签:vue element single domMessage response showMessage 异常 options

  有时候一个页面会同时调多个接口,但是多个接口异常,需要做提示,那么提示的时候会弹出很多的提示信息,这无疑让体验感降低很多。  所以针对这种情况,我们配合element UI统一做一个异常状态的处理,只能显示一次提示的功能,后续代码调接口的时候

也可以省略去写异常状态下的逻辑了。
首先新建一个文件 messageOnce.js,内容如下:

import {Message} from 'element-ui'
// 私有属性,只在当前文件可用
const showMessage = Symbol('showMessage')
export default class domMessage {
	success (options, single = true) {
		this[showMessage]('success', options, single)
	}
	warning(options, single = true) {
		this[showMessage]('warning', options, single)
	}
	info(options, single = true) {
		this[showMessage]('info', options, single)
	}
	error(options, single = true) {
		this[showMessage]('error', options, single)
	}
	[showMessage] (type, options, single) {
		if (single) {
			// 判断当前页是否有el-message标签,如果没有则执行弹窗操作
			if (document.getElementsByClassName('el-message').length === 0) {
				Message[type](options)
			}
		} else {
			Message[type](options)
		}
	}
}

  

第二步,需要在你的响应拦截器(interceptors.response.use)的页面去引入刚才的文件,我取名为domMessage,引入:import domMessage from './messageOnce'
第三步,new 对象实例 const messageOnce = new domMessage()
第四步,在响应拦截器中去写

if (response.data.code && JSON.parse(response.data.code) == 500) {
      messageOnce.warning({
        message: '系统异常'+response.data.msg,
        type: 'warning'
      })
}

  然后尝试就行了。

标签:vue,element,single,domMessage,response,showMessage,异常,options
From: https://www.cnblogs.com/zyz-s/p/17448474.html

相关文章

  • vue+docxtemplater,填充word模板
    安装依赖yarnadddocxtemplateryarnaddpizzipyarnaddjszip-utilsyarnaddfile-saver//模板解析插件(支持list循环直接使用$index,使用if判断语法)yarnaddangular-expressionsyarnaddlodash页面测试代码<template> <div> <button@click="bt......
  • vuex加入后启动项目出现WARNING
    出现问题:importVuexfrom‘vuex’;Vue.use(Vuex);安装导入vuex后,在终端执行npmrunserve后出现WARNING,网页中vue无法启动WARNINGCompiledwith3warnings10:33:05warningin../node_module......
  • vue开场动画2
    <!--加载中动画--><style>.app-loading-box{position:fixed;display:flex;justify-content:space-around;align-items:center;width:100vw;height:100vh;top:0;}......
  • vue出现样式问题,竖线样式为正常展示
    预期样式效果: 但是有时候是这样的: 有时候又是好的,奇奇怪怪得bug,经过查看debugger,发现是代码逻辑出现了问题。 本来finally里面得东西是放在请求外面的,请求时异步得,先执行了下面finally里面的逻辑,导致后执行得请求返回来的函数,接收不到变量的变化就gg了,刚开始这里用的还......
  • vue基础用法-初步使用vue
    1.基本使用步骤导入vue.js的script脚本文件在页面中声明一个将要被vue所控制的DOM区域创建vm实例对象(vue实例对象)<!DOCTYPEhtml><htmllange="en"> <head> <metacharset="utf-8"> <title></title> </head> <body> <!--希望......
  • try catch捕获异常解析堆栈信息
    1packagekd.moya.zhgs.helper;2importjava.io.PrintWriter;3importjava.io.StringWriter;4/**5@ClassName:ErroHelper6@Description:TODO(异常解析)7@author:liul8@Date:2021/11/100010/15:08/星期三9/10publicclassErroHelper{11/*12......
  • 解决mybatis-plus查询字段中含有关键词时异常问题
    在使用mybatis-plus查询mysql某张表的数据时,一直告警提示sqlsyntaxerror。于是,把异常提示里的sql语句复制到navicat执行,也提示sqlsyntaxerror。仔细看了下,发有几个字段在navigate里面标示为蓝色(这几个字段为sensitive、status、name),这几个字段在mysql里面是关键词。在查询语......
  • Font-AweSome在Vue中的使用
    Font-AweSome在Vue中的使用yarnaddfont-awesome或者npmifont-awesome-S在main.js中引入import'font-awesome/css/font-awesome.min.css'Vue中使用<iclass="fafa-camera-retro"></i> ......
  • Vue2实现双向数据绑定原理
    Vue2.x采用数据劫持结合发布订阅模式(PubSub模式)的方式,通过Object.defineProperty来劫持各个属性的setter、getter,在数据变动时发布消息给订阅者,触发相应的监听回调。当把一个普通Javascript对象传给Vue实例来作为它的data选项时,Vue将遍历它的属性,用Object.defineProp......
  • VUE
    一、Vue程序初体验学习源:动力节点老杜课程1.1下载并安装vue.js第一步:打开Vue2官网,点击下图所示的“起步”:https://v2.cn.vuejs.org/第二步:继续点击下图所示的“安装”第三步:在“安装”页面向下滚动,直到看到下图所示位置:第五步:安装Vue:使用script标签引入vue.j......