本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于vue項(xiàng)目刷新當(dāng)前頁(yè)面的解決方法介紹,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
場(chǎng)景:
有時(shí)候我們?cè)?code>vue項(xiàng)目頁(yè)面做了一些操作,需要刷新一下頁(yè)面。
解決的辦法及遇到的問(wèn)題:
this.$router.go(0)。這種方法雖然代碼很少,只有一行,但是體驗(yàn)很差。頁(yè)面會(huì)一瞬間的白屏,體驗(yàn)不是很好
用vue-router重新路由到當(dāng)前頁(yè)面,頁(yè)面是不進(jìn)行刷新的。
location.reload()。這種也是一樣,畫面一閃,體驗(yàn)不是很好
推薦解決方法:
用provide / inject 組合
原理:允許一個(gè)祖先組件向其所有子孫后代注入一個(gè)依賴,不論組件層次有多深,并在起上下游關(guān)系成立的時(shí)間里始終生效
在App.vue,聲明reload方法,控制router-view的顯示或隱藏,從而控制頁(yè)面的再次加載。
<template> <p id="app"> <router-view v-if="isRouterAlive"></router-view> </p> </template> <script> export default { name: 'App', provide () { return { reload: this.reload } }, data () { return { isRouterAlive: true } }, methods: { reload () { this.isRouterAlive = false this.$nextTick(function () { this.isRouterAlive = true }) } } } </script>
在需要用到刷新的頁(yè)面。在頁(yè)面注入App.vue
組件提供(provide
)的 reload
依賴,在邏輯完成之后(刪除或添加...),直接this.reload()
調(diào)用,即可刷新當(dāng)前頁(yè)面。
注入reload方法
直接調(diào)用this.reload
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com