幽灵资源网 Design By www.bzswh.com
前言
近期项目马上上线,前两天产品提个需求,加个全局loading,我这半路出家的vue选手,有点懵逼,这玩意还是第一次,但是作为一个初级的前端切图仔,这个东西是必须会的,花了五分钟思考了一下,然后动键盘码出来 ,今天总结一下,与各位分享交流,有错误还请各位指出。
思路
我们项目请求使用的是axios,那么我们就在请求前后进行拦截,添加我们需要的东西,然后通信控制loading,通信方式我就不写了,有个老哥写的不错,可以去看看传送门
代码实现
首先对axios进行封装 如果你想进行全局错误提醒 也可以在拦截的代码进行操作 具体代码看下面
/**
* axios 配置模块
* @module config
* @see utils/request
*/
/**
* axios具体配置对象
* @description 包含了基础路径/请求前后对数据对处理,自定义请求头的设置等
*/
const axiosConfig = {
baseURL: process.env.RESTAPI_PREFIX,
// 请求前的数据处理
// transformRequest: [function (data) {
// return data
// }],
// 请求后的数据处理
// transformResponse: [function (data) {
// return data
// }],
// 自定义的请求头
// headers: {
// 'Content-Type': 'application/json'
// },
// 查询对象序列化函数
// paramsSerializer: function (params) {
// return qs.stringify(params)
// },
// 超时设置s
timeout: 10000,
// 跨域是否带Token 项目中加上会出错
// withCredentials: true,
// 自定义请求处理
// adapter: function(resolve, reject, config) {},
// 响应的数据格式 json / blob /document /arraybuffer / text / stream
responseType: 'json',
// xsrf 设置
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
// 下传和下载进度回调
onUploadProgress: function (progressEvent) {
Math.round(progressEvent.loaded * 100 / progressEvent.total)
},
onDownloadProgress: function (progressEvent) {
Math.round(progressEvent.loaded * 100 / progressEvent.total)
},
// 最多转发数,用于node.js
maxRedirects: 5,
// 最大响应数据大小
maxContentLength: 2000,
// 自定义错误状态码范围
validateStatus: function (status) {
return status >= 200 && status < 300
}
// 用于node.js
// httpAgent: new http.Agent({ keepAlive: true }),
// httpsAgent: new https.Agent({ keepAlive: true })
}
/** 导出配置模块 */
export default axiosConfig
开始构建请求对象
const request = axios.create(config)
请求之前拦截
// 请求拦截器
request.interceptors.request.use(
config => {
// 触发loading效果
store.dispatch('SetLoding', true)
return config
},
error => {
return Promise.reject(error)
}
)
请求后拦截
// 返回状态判断(添加响应拦截器)
request.interceptors.response.use(
(res) => {
// 加载loading
store.dispatch('SetLoding', false)
// 如果数据请求失败
let message = ''
let prefix = res.config.method !== 'get' "htmlcode">
state: {
loading: 0
},
mutations: {
SET_LOADING: (state, loading) => {
loading "htmlcode">
router.beforeEach((to, from, next) => {
store.dispatch('CLEANLOADING')
next()
})
全局的loading我这边是加在home.vue里,由于我这个项目是后台管理,可以加在layout.vue,其实都差不多
<div class="request-loading" :class="{'request-loading-show':loading}">
<div class="request-loading-main" ></div>
</div>
import { mapGetters } from 'vuex'
export default {
data () {
}
computed: {
...mapState(['loading])
}
<scrirpt lang="scss" scoped>
//这个我就不写了 loading样式不同 我们代码也就不同
</script>
大致代码和思路就是这样 可能会有错误 还希望各位批评指正
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。