1.場景
在處理列表時(shí),常常有刪除一條數(shù)據(jù)或者新增數(shù)據(jù)之后需要重新刷新當(dāng)前頁面的需求咧擂。
2.遇到的問題
1. 用vue-router重新路由到當(dāng)前頁面逞盆,頁面可以不進(jìn)行刷新;
2.采用window.reload()松申,或者router.go(0)刷新時(shí)云芦,整個(gè)瀏覽器進(jìn)行了重新加載,閃爍攻臀,體驗(yàn)不好焕数;
3.解決方法
provide / inject 組合
作用:允許一個(gè)祖先組件向其所有子孫后代注入一個(gè)依賴,不論組件層次有多深刨啸,并在起上下游關(guān)系成立的時(shí)間里始終生效堡赔。
App.vue:
聲明reload方法,控制router-view的顯示或隱藏设联,從而控制頁面的再次加載
image
其它組件如:role.vue
在其它要調(diào)用 this.reload 的組件添加inject屬性:
image
然后可以在你的相應(yīng)的方法中調(diào)用:
image
4.provide / inject 用法
provide:選項(xiàng)應(yīng)該是一個(gè)對(duì)象或返回一個(gè)對(duì)象的函數(shù)善已。該對(duì)象包含可注入其子孫的屬性灼捂。
inject:一個(gè)字符串?dāng)?shù)組,或一個(gè)對(duì)象换团,對(duì)象的 key 是本地的綁定名
提示:provide
和 inject
綁定并不是可響應(yīng)的悉稠。這是刻意為之的。如果你傳入了一個(gè)可監(jiān)聽的對(duì)象艘包,那么其對(duì)象的屬性還是可響應(yīng)的的猛。