页面部份:
<el-main> <!-- 应用单页组件缓存 --> <keep-alive v-if="$route.meta.keepAlive"> <router-view></router-view> </keep-alive> <router-view v-else></router-view></el-main>
router.js:
{ path:'supplier', // 供应商治理 name:'supplier', component:()=> import('@/business/baseinfo/supplier'), meta:{ keepAlive:true }}
如果keepAlive:true,则应用缓存。
<keep-alive> 包裹动静组件时,会缓存不流动的组件实例,而不是销毁它们。和 <transition> 类似,<keep-alive> 是一个形象组件:它本身不会渲染一个 DOM 元素,也不会呈现在父组件链中。
当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。
路由的内容只在第一次进入的时候,触发created和mounted办法,再次进入页面不会从新获取数据。
所以页面初始化要用activated替换created函数。
当引入keep-alive 的时候,页面第一次进入,钩子的触发程序created-> mounted-> activated,退出时触发deactivated。当再次进入(后退或者后退)时,只触发activated。