一般项目中,有时候会要求,你在数据请求的时候显示一张gif图片,然后数据加载完后,消失。这个,一般只需要在封装的axios中写入js事件即可。当然,我们首先需要在app.vue中,加入此图片。如下:
这里的fetchLoading是存在vuex里面的一个变量。在store/modules/common.js里需要如下定义:
state.fetchLoading
}
const actions = {
// 请求数据时状态loading
FETCH_LOADING({
commit
},res) {
commit(types.FETCH_LOADING,res)
},}
const mutations = {
// 请求数据时loading
[types.FETCH_LOADING] (state,res) {
state.fetchLoading = res
}
}
loading组件如下:
@H_502_7@
最后在fetch/api.js里封装的axios里写入判断loading事件即可:如下
{
axios.post(url,params)
.then(response => {
// 关闭 loading图片消失
let oDate = new Date()
let time = oDate.getTime() - axiosDate.getTime()
if (time < 500) time = 500
setTimeout(() => {
store.dispatch('FETCH_LOADING',false)
},time)
resolve(response.data)
})
.catch((error) => {
// 关闭 loading图片消失
store.dispatch('FETCH_LOADING',false)
axiosDate = new Date()
reject(error)
})
})
}
export default {
// 组件中公共页面请求函数
commonApi (url,params) {
if(stringQuery(window.location.href)) {
store.dispatch('FETCH_LOADING',true);
}
axiosDate = new Date();
return fetch(url,params);
}
}
原文链接:https://www.f2er.com/vue/34991.html