首先根据你的描述,你应该是想要解决在路由更改时根据不同的情况来决定是否请求数据. 然后说下你遇到的问题,使用了keep-alive,但是不想触发对应的onActivted方法,这是不行的.因为对应的钩子函数是在组件整个生命周期当中的一环,既然已经是了缓存组件,那么一定会触发对应的缓存组件的钩子. 我提供了几种思路: 1. 使用keep-alive,但是对应的数据请求放在mounted中,然后在当前路径中添加参数,通过watch对应的路由参数的值来判断是否进行请求逻辑. 2. 使用消息订阅和发布,在router.push(xx).then(()=>触发订阅)中设置keep-alive的includes或者excludes让当前页面被排除在缓存之外,然后更新页面的key值,将对应的页面再添加进缓存.相当于刷新了当前的组件.(如果存在其他请求接口的逻辑,可能会导致页面重复请求两次,建议封装本地的请求做缓存处理,同接口同参数的接口短时间重复请求使用第一次的结果) 3. 当然你也可以再push的then方法中通过消息发布来触发对应页面的请求.