2021-11-06 学习记录--Vue-实现页面之间切换后,不会改变原来的浏览位置,不会跳回到页面最顶部

一、实现从A页面切换到B页面,再次切换到A页面时,不会自动跳转到A页面的最顶部,而是停留在A页面原来的浏览位置

造成原因Vue自带一个属性:destroyed(销毁)
解决方法:用<keep-alive></keep-alive>进行包裹
在这里插入图片描述
如下图中最下面所示:有四个可切换的页面:首页(Home.vue)、分类(Category.vue)、购物车(ShopCart.vue)、我的(Profile.vue
在这里插入图片描述

第一步、分析造成原因

假如在首页Home.vue)页面里写入代码:

// 销毁-当从首页切换到其它页面时,就会触发这个事件
destroyed() {
   console.log('home destroyed');
},

结果如下

当我们从首页Home.vue)页面切换到其它三个页面中的任意一个页面时,就会打印home destroyed
在这里插入图片描述
这样的话,就会造成我们标题里所说的问题

多个页面切换时,会自动跳转到最顶部,而不是停留在原来浏览位置

第二步、解决方法

那么,解决方法

通过keep-alive,在App.vue中将对应页面内容包起来即可。
【因为这是将对应页面的展示内容封装在这儿滴,这里根据实际需求进行修哈哟,只要把首页的展示内容用<keep-alive></keep-alive>包裹起来就好啦】

上代码:
在这里插入图片描述

第三步、最终结果

最终结果
在这里插入图片描述
切换到分类(Category.vue)页面:👇
在这里插入图片描述
再次切换到首页(Home.vue)页面: 👇👇
在这里插入图片描述
哒哒哒~搞定🤭

二、补充情况

补充情况:
当我们遇到以下情况时,却出现一个bug:当我们点击其中任何一张图片,跳转到的详情页里的图片展示的都是 相同 滴:
在这里插入图片描述
Because 这里是根据不同图片的对应id不同,跳转到不同的对应详情页

So 这里需要将 对应详情页(Detail.vue)排除在外,这个页面(Detail.vue)不能用<keep-alive></keep-alive>包裹起来,那该如何操作呢?

上代码:【在<keep-alive></keep-alive>里加上下面这句代码就好啦~】
在这里插入图片描述
bingo~☺️

These are bilibili-coderwhy老师Vue学习视频的 学习笔记~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小呀小萝卜儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值