1.場景
在處理列表時,常常有刪除壹條數據或者新增數據之後需要重新刷新當前頁面的需求。
2.遇到的問題
1. 用vue-router重新路由到當前頁面,頁面是不進行刷新的
2.采用window.reload(),或者router.go(0)刷新時,整個瀏覽器進行了重新加載,閃爍,體驗不好
3.解決方法
provide / inject組合
作用:允許壹個祖先組件向其所有子孫後代註入壹個依賴,不論組件層次有多深,並在起上下遊關系成立的時間裏始終生效。
App.vue:
聲明reload方法,控制router-view的顯示或隱藏,從而控制頁面的再次加載
tableList.vue:
在頁面註入App.vue組件提供(provide)的 reload 依賴,在邏輯完成之後(刪除或添加...),直接this.reload()調用,即可刷新當前頁面。
4.provide / inject 用法
provide:選項應該是壹個對象或返回壹個對象的函數。該對象包含可註入其子孫的屬性。
inject:壹個字符串數組,或壹個對象,對象的 key 是本地的綁定名
提示:provide和inject綁定並不是可響應的。這是刻意為之的。如果妳傳入了壹個可監聽的對象,那麽其對象的屬性還是可響應的。
相信看了本文案例妳已經掌握了方法,更多精彩請關註Gxl網其它相關文章!
推薦閱讀:
如何使用v-model與promise兩種方式實現vue彈窗組件
如何使用Vue二次封裝axios插件