測試:vue
activated() { console.log('activated') //只刷新數據,不改變總體的緩存 this.getList() }, mounted () { this.getList() }, deactivated () { //清除keep-alive的緩存 console.log('deactivated') // this.$destroy(true) // 這裏咱們並無清楚keep-alive緩存 }, beforeDestroy () { console.log('beforeDestroy') // 實例銷燬以前調用。在這一步,實例仍然徹底可用。 }, destroyed () { console.log('destroyed') // Vue 實例銷燬後調用。調用後,Vue 實例指示的全部東西都會解綁定,全部的事件監聽器會被移除,全部的子實例也會被銷燬。 }, //修改列表頁的meta值,false時再次進入頁面會從新請求數據。 beforeRouteLeave(to, from, next) { console.log('beforeRouteLeave') from.meta.keepAlive = false next() }, beforeRouteEnter (to, from, next) { console.log('beforeRouteEnter') next() },
場景一: 從其餘路由進入該路由:緩存
場景二:當前路由刷新函數
場景三: 當前路由下跳到二級路由 (頁面作了判斷,當跳到它下面的二級路由時候取消keep-alive)測試
場景四:從二級路由再跳回來this
從上能夠看出,幾個場景下都沒有執行spa
那到底啥時候執行destryed呢?code
註釋已經給出了答案,是vue實例銷燬的時候調用,哈哈!!這些場景都只是路由之間的跳轉blog
還有其餘生命週期函數後期再加上生命週期