vue的keep-alive
keep-alive是vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM;
keep-alive包裹动态组件的时候,会缓存不活动的组件实例,而不是销毁他们;
例如:
有这样一个页面

food.vue中
<template>
    <div>
      <h1>button1页面:</h1>
      food页面,参数:{{$route.params.id}}
    </div>
</template>
<script>
    export default {
        name: "food",
      created(){
          console.log("food组件被创建")
      },
      mounted() {
          console.log("food组件被加载了")
      },
      destroyed() {
          console.log("food组件被销毁了")
      }
    }
</script>
rating.vue中
<template>
    <div>
      <h1>button2页面:</h1>
      rating页面,参数:{{$route.params.id}}
    </div>
</template>
<script>
    export default {
        name: "rating",
      created(){
        console.log("rating组件被创建")
      },
      mounted() {
        console.log("rating组件被加载了")
      },
      destroyed() {
        console.log("rating组件被销毁了")
      }
    }
</script>
当点击button1时,显示页面1,点击button2时,显示页面2;但是在切换的过程是:

food组件被创建——>food组件被加载——>(点击button2)——>rating组件被创建——>food组件被销毁——>rating组件被加载了;
切换不同组件时,会不断销毁,加载;
当用keep-alive包裹后:
<keep-alive>
       <router-view></router-view>
</keep-alive>

组件被缓存,不会因为加载一个而销毁另一个,无论切换多少次都是图片中的两次创建,两次加载。

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号