同一个页面点击不同按钮到列表页面,是否缓存的问题踩坑之旅

需求提了这样一个要求,当我们从列表页跳转到(详情页面,修改页面,新增页面)时,点击(详情页面,修改页面,新增页面)上面的返回按钮,可以回到列表页面,并且需要缓存最初的列表页面条件与页数。

对于这种情况,第一想到的解决办法是在路由列表里面加上keepAlive属性,如下图

这样在列表里面缓存问题确实解决了,但是出现了个问题,如果不是从返回按钮进入到列表页面的,我们是不需要缓存的,需要重新调接口的

于是考虑能否将返回按钮做成一个公共组件,当点击返回时在路由控制里面来改变keepAlive的值,在Route.beforeEach里面来判断是否是从返回按钮来的,但是经过测试这种方法不可取,第一,第一次进入列表页面时,页面不会缓存,只有第二次才开始缓存,同时我在详情页面里面刷新下,在返回里面的from就变成‘/’,也不能缓存,因此这个方法不可行。后来查询了下keepAlive是在列表页面时才判断是否缓存,而不是从详情页面跳转回列表页面时是否缓存,因此在路由公共里面改keepAlive是不可行的。

这时我们就想到了与keepAlive配套的activated生命周期,只要列表页面路由设置了keepAlive:true,在列表页面都会触发activated,那我们在点击返回按钮时多传个isBack属性,然后通过isBack来判断是否重新初始化加载数据就行啦。

因为我的搜索条件是直接自己封装的,因此直接掉组件的初始化事件就可以了。

后来发现每次找返回事件,然后将其改为

比较繁琐,特别是像详情页面只有一个返回按钮,之前统一用的是$router.back(-1),因此除了有多个按钮的页面(如新增,修改页面)像上面这样用push以外,其他像详情页面,预览页面直接加上这个

省事多了。

那么这样,这个需求就解决了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值