国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue 實現(xiàn)前進刷新后退不刷新的效果

2019-11-19 11:20:55
字體:
來源:轉載
供稿:網(wǎng)友

需求一:

在一個列表頁中,第一次進入的時候,請求獲取數(shù)據(jù)。

點擊某個列表項,跳到詳情頁,再從詳情頁后退回到列表頁時,不刷新。

也就是說從其他頁面進到列表頁,需要刷新獲取數(shù)據(jù),從詳情頁返回到列表頁時不要刷新。

解決方案在 app.vue 設置:

<keep-alive include="list"><router-view/></keep-alive>

假設列表頁為 list.vue ,詳情頁為 detail.vue ,這兩個都是子組件。

我們在 keep-alive 添加列表頁的名字,緩存列表頁。

然后在列表頁的 created 函數(shù)里添加ajax請求,這樣只有第一次進入到列表頁的時候才會請求數(shù)據(jù),當從列表頁跳到詳情頁,再從詳情頁回來的時候,列表頁就不會刷新。

這樣就可以解決問題了。

需求二:

在需求一的基礎上,再加一個要求:

可以在詳情頁中刪除對應的列表項,這時返回到列表頁時需要刷新重新獲取數(shù)據(jù)。

我們可以在路由配置文件上對 detail.vue 增加一個 meta 屬性。

{  path:'/detail',  name:'detail',  component:() => import('../view/detail.vue'),  meta:{ isRefresh:true }}

這個 meta 屬性,可以在詳情頁中通過 this.$route.meta.isRefresh 來讀取和設置。 設置完這個屬性,還要在 App.vue 文件里設置 watch 一下 $route 屬性。

watch:{  $route(to, from) {    const fname = from.name    const tname = to.name    if (from.meta.isRefresh || (fname != 'detail' && tname == 'list')) {      // 在這里重新請求數(shù)據(jù)      from.meta.isRefresh = false    }  }}

這樣就不需要在列表頁的 created 函數(shù)里用 ajax 來請求數(shù)據(jù)了,統(tǒng)一放在 App.vue 里來處理。

觸發(fā)請求數(shù)據(jù)有兩個條件:

  1. 從其他頁面(除了詳情頁)進來列表時,需要請求數(shù)據(jù)。
  2. 從詳情頁返回到列表頁時,如果詳情頁 meta 屬性中的 isRefresh 為 true ,也需求重新請求數(shù)據(jù)。

當我們在詳情頁中刪除了對應的列表項時,就可以將詳情頁 meta 屬性中的 isRefresh 設為 true 。這時再返回到列表頁,頁面會重新刷新。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彭州市| 陆丰市| 岱山县| 凤凰县| 武鸣县| 海安县| 汪清县| 大庆市| 疏勒县| 巴林右旗| 吉木乃县| 湘西| 红安县| 高雄市| 饶阳县| 平乐县| 博白县| 澄迈县| 钟祥市| 利辛县| 正定县| 红原县| 柘荣县| 方正县| 榕江县| 西充县| 南平市| 嘉峪关市| 民丰县| 曲阜市| 山丹县| 通道| 屏南县| 阳高县| 永清县| 沙坪坝区| 上栗县| 灌阳县| 浪卡子县| 鄱阳县| 德江县|