前言
近期项目马上上线,前两天产品提个需求,加个全局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>
大致代码和思路就是这样 可能会有错误 还希望各位批评指正
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]