Après la mise à niveau vers la version 2.7.7, il s'avère que lors du changement d'itinéraire, le composant de chargement aura une certaine chance de ne pas disparaître.Consultez l'entrepôt officiel :
https://github.com/airyland/vux/commit/866a76302711e0198b69f3815196d0b51afef11c
Il s'avère que le composant a été mis à jour, que le paramètre de délai a été ajouté et qu'il peut y avoir un bogue.
Code associé :
Vue.http.interceptors.push((request, next) => {
Vue.$vux.loading.show({
text: 'Loading',
});
// 登录成功后将后台返回的TOKEN在本地存下来,每次请求从localStorage中拿到存储的TOKEN值
const TOKEN = localStorage.getItem('cw_token');
if (TOKEN) {
// 如果请求时TOKEN存在,就为每次请求的headers中设置好TOKEN,后台根据headers中的TOKEN判断是否放行
request.headers.set('token', TOKEN);
}
next((response) => {
Vue.$vux.loading.hide();
if (response.status == 200 && response.body.code == 10002) {
localStorage.removeItem('cw_token');
localStorage.removeItem('cw_user');
app.$vux.toast.show({
text: '会话已过期,请重新登录',
time: 1000,
})
setTimeout("location.href='/'", 1000);
}
return response;
});
});
Le bogue a été trouvé. Avant que le délai ne soit affecté à setTimeout, il n'y a pas de clearTimeout manuel. Modifiez le code source :
const loading = {
show (options = {}) {
// destroy watcher
watcher && watcher()
if (typeof options === 'string') {
$vm.text = options
} else if (typeof options === 'object') {
mergeOptions($vm, options)
}
if (typeof options === 'object' && options.onShow || options.onHide) {
watcher = $vm.$watch('show', (val) => {
val && options.onShow && options.onShow($vm)
val === false && options.onHide && options.onHide($vm)
})
}
clearTimeout(delayTime); // 避免在拦截器使用时,同时发起多个请求,delayTime重新赋值,macro队列引起的$vm.show = true滞后(后于hide()执行之后,所以loading一直存在)
delayTime = setTimeout(() => {
$vm.show = true
}, options.delay || 0)
},
hide () {
if (delayTime) {
clearTimeout(delayTime)
delayTime = null
}
$vm.show = false
}
}
PS : Le document officiel de l'API n'ajoute pas de description du paramètre de délai, j'espère l'ajouter à temps.
Corrigé, merci
@lichunqiang a également un petit problème. Après avoir mis à jour la description du paramètre de délai sur le site officiel, le style de description de chargement est en panne.
https://vux.li/#/zh -CN/components?id=loading
Hum, c'est réglé
efficace.
Commentaire le plus utile
Hum, c'est réglé