vue进入页面每次执行_Vue学习笔记之路由的keep-alive应用及技巧

keep-alive的应用:

作用:keep-alive是Vue内置的一个组件,可以使比包含的组件保留状态,或避免重新渲染,而router-view也是一个组件,如果直接被包在keep-alive里面,所有的路径匹配到的视图组件都会被缓存。

生命周期:

· 初次进入时:created > mounted > activated;退出后触发 deactivated

· 再次进入:会触发 activated;事件挂载的方法等,只执行一次的放在 mounted 中;组件每次进去执行的方法放在 activated 中

PS:复习一下Vue的生命周期,其中destroyed在vue3里面改为unmounted

eaa505717c61106f9301257a39fc9a41.png

实现方法:

PS:Vue3的格式如下

5297a3c69ebe438d747e0837622afe06.png

在about里面做这样的修改:在进入页面活跃状态时,给他赋值一个path值,当离开这个页面时,通过组件内导航守卫 beforeRouteLeave 记录上一次离开时的状态:

adb704ea290b0e1c49fc18f0d69461a6.png

所以我在about页面上切换"新闻"、"消息"的时候,就能记住最后一次离开页面的地址:

cc86e0d11d2092110c8d9faf11271e02.png

所以当页面离开about页面跳转到其他页面后,再回到about页面时,下面显示的还是"新闻"这个界面的内容。

PS:activated和deactivated两个函数,只有该组件被保持了状态使用了时,才是有效的。

keep-alive的属性:

· include:字符串或正则表达式,只有匹配的组件会被缓存

· exclude:字符串或正则表达式,任何匹配的组件都不会被缓存

3d95d93d677b360c8d60f315d00026ed.png

这样About跟User两个组件就不会被缓存了。

PS:正则表达式或组件名字之前不要加空格!

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,使用`<keep-alive>`组件可以缓存组件的状态,使得在组件之间切换时保留组件的状态。当没有使用`<keep-alive>`组件时,每次切换到一个新的组件时,旧的组件会被销毁,下次再切换回来时需要重新创建。 下面是一个简单的例子来演示无`<keep-alive>`和有`<keep-alive>`页面来回切换的区别。 ```vue <template> <div> <button @click="toggle">Toggle</button> <!-- 无 keep-alive --> <div v-if="showComponent"> <ComponentA /> </div> <!-- 有 keep-alive --> <keep-alive> <div v-if="showComponent"> <ComponentB /> </div> </keep-alive> </div> </template> <script> import ComponentA from './ComponentA.vue' import ComponentB from './ComponentB.vue' export default { components: { ComponentA, ComponentB }, data() { return { showComponent: true } }, methods: { toggle() { this.showComponent = !this.showComponent } } } </script> ``` 在上述代码中,我们有两个组件:`ComponentA`和`ComponentB`。当点击"Toggle"按钮时,`showComponent`的值会切换,控制两个组件的显示和隐藏。 如果没有使用`<keep-alive>`,每次切换时,旧的组件会被销毁,然后重新创建新的组件。这意味着组件的状态会丢失,所有的数据和计算属性都会被重置。 如果使用了`<keep-alive>`,在切换时旧的组件不会被销毁,而是被缓存起来。这样,切换回来时组件的状态会被保留,数据和计算属性等都会保持不变。 所以,使用`<keep-alive>`可以提高页面切换的性能,并且保留组件的状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值