鍍金池/ 問(wèn)答/HTML/ vue 如果讓頁(yè)面來(lái)回跳轉(zhuǎn),但數(shù)據(jù)不變

vue 如果讓頁(yè)面來(lái)回跳轉(zhuǎn),但數(shù)據(jù)不變

我當(dāng)前場(chǎng)景是,產(chǎn)品搜索頁(yè) /search?a=b&c=d 與 產(chǎn)品詳情頁(yè) /item/123 都是在同一個(gè) router-view ;

我想要效果是,列表頁(yè)跳轉(zhuǎn)詳情頁(yè),再跳回來(lái),列表頁(yè)不刷新

兩個(gè)頁(yè)面路由如下

children: [
    {
        path: 'search',
        name: 'search',
        meta: {
            title: '商品搜索',
            keepAlive: true
        },
        component: _import('xx')
    },
    {
        path: 'item/:skuid',
        name: 'detail',
        meta: {
            title: '商品詳情',
            keepAlive: false
        },
        component: _import('xxx')
    }
]

搜索頁(yè)面監(jiān)聽(tīng) $route(如下代碼),一有變化就加載產(chǎn)品列表,

watch: {
    '$route': {
         handler: 'getProduct',
         immediate: true
     }
}

搜索一下網(wǎng)上很多提到用 keep-alive結(jié)合mate.keepAlive實(shí)現(xiàn),但我不明白原理,并且下面寫(xiě)法并不能實(shí)現(xiàn)想要效果

<keep-alive>
    <router-view></router-view>
</keep-alive>

第一次用前端框架,很多概念都不怎么理解,看文檔有點(diǎn)懵逼

我的思路是不是錯(cuò)了,或者是寫(xiě)法錯(cuò)誤,希望得到指點(diǎn),拜托了

回答
編輯回答
朕略萌

<keep-alive include="a,b">
<!-- 將緩存name為a或者b的組件-->
<component :is="view"></component>
</keep-alive>

2018年3月30日 01:15
編輯回答
編輯回答
歆久

在App.vue中的view外面包keep-active,js代碼同一樓所說(shuō)

2017年9月3日 01:19
編輯回答
誮惜顏

我之前做過(guò)類(lèi)似的,使用keep-alive,在路由里面的meta在定義是否需要緩存:
https://segmentfault.com/q/10...

2017年6月27日 06:59
編輯回答
你好胸

題主是想要有keep-alive的緩存效果,但是如果數(shù)據(jù)發(fā)生變化,就更新列表,是不是?

其實(shí),kepp-alive鉤子的觸發(fā)順序created-> mounted-> activated,退出時(shí)觸發(fā)deactivated。當(dāng)再次進(jìn)入(前進(jìn)或者后退)時(shí),只觸發(fā)activated。vue keep-alive生命周期描述

所以,題主,只要把create鉤子中的獲取數(shù)據(jù)邏輯放置到activated中即可,而且是完全的響應(yīng)式

2018年7月10日 11:06