cch‘s blog

Strive for a better life

关于vue路由缓存问题

之前在工作中遇到了个关于页面跳转相关的缓存问题,没想到解决起来意外的挺简单的。

需求是这样的,有个移动webApp,下面有4个tab可以切换,然后其中有个页面有个列表,在列表页点击某些功能可以跳转至页面B、页面C,页面C返回的时候列表不能刷新,滚动条需要在原来的位置,然而在C页面做了一些操作的时候是会影响列表项的值的,做了这些操作的话,返回列表页需要刷新数据。

我的解决方案当然是用keep-alive了,然后把他的includes绑定到状态中去,这样可以方便的进行增加、删除。然后在列表页面中添加路由守卫,当判断要跳转到B、C页面的时候,把当前页面添加到缓存中,如果在二级页面需要删除缓存,则在状态管理里把缓存删掉,这样回到列表页之后就会刷新了。

需要注意的是includes中使用的是组件的名称进行缓存的,所以组件的命名要规范,有语义,最好不要重复。