通過key決定是否刷新keep-alive組件的方法


有時候不一定需要exclude去控制哪些組件要被排除在緩存外面的,有些可能是根據實際情況決定是否控制緩存,這時候網上有

 

<keep-alive v-if='$route.meta.keepAlive">
<router-view ></router-view>
</keep-alive>
 
就是通過路由配置meta去實現的,但是本人測試了一下以后發現其實是不可以做到的,這時候可以換個思路,使用key 刷新router-view去實現控件刷新,大概代碼如下:
HTML:
 <keep-alive>
            <router-view :key="checkKeepAlive()"></router-view>
          </keep-alive>

JS:

checkKeepAlive() {
      if (!this.$route.meta.keepAlive) {
        console.log('輸出',this.$route.name)
        return this.$route.name+Math.random();
      }
    }

router:(我這里是自路由控制)

 children: [
      {
        path: "/home/test1",
        name: "test1",
        meta: {
          keepAlive: true
        },
        component: () => import("@/components/Test1.vue")
      },
      {
        path: "/home/test2",
        name: "test2",
        meta: {
          keepAlive: false
        },
        component: () => import("@/components/Test2.vue")
      }
    ]

然后你就可以寫JS去控制keepalive的true/false去實現緩存可控了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM