需求:一级页面mounted或者created中发送页面请求获取数据渲染完成后,点击进入二级页面,当回退一级页面的时候再次重复请求。
解决方式三种:
一、缓存所有页面,在app.vue中使用<keep-alive>标签包裹动态路由
二、选择性缓存部分页面
1、使用router.meta属性,在app.vue中做选择性缓存判断
2、 router.js中如下设置:
3、使用vue-router 2.0的新特性,提供了include/exclude两个属性 可以针对性缓存相应的组件,在app.vue页面使用include属性指定要缓存的组件名,此处不是路由name。
总结,以上两种方式虽然可以缓存页面组件,但是当你第一进入需要缓存的页面后,页面数据被缓存下来,但是当你再次进入时,你会发现,页面的数据还是之前的数据,这样再次进入时无法实时动态获取数据,存在缺陷,所以个人推荐第三种方式,即activated配合keep-alive的方式缓存页面组件。
三、使用activated配合keep-alive
1、首先,需要使用router.meta属性,修改需要缓存的组件路由如下:
2、其次修改需要缓存的组件中的代码 :
3、最后使用vue-router 2.0的新特性,提供了include/exclude两个属性 可以针对性缓存相应的组件,在app.vue页面使用include属性指定要缓存的组件名,此处不是路由name。
到此处全部设置完成。