给两个异步路由都写了 name 想配合 include,结果 keep-alive 一个都不生效,来回切换都在重新请求接口。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,keep-alive 的 include 按组件 name 匹配,异步组件没显式声明时,构建后拿到的名字都是 default,include 里写的值与它对不上。

「异步组件 name 冲突」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。

export default { name: 'OrderList' }
// <keep-alive :include="['OrderList','OrderDetail']">

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

具体做法是,每个异步组件显式写 name,和路由 name 保持一致;include 用数组列清楚,别用通配符去猜;在组件树里确认 name,对不上就是没生效。

最后用这个标准收尾,切换两个页面时组件实例被复用,接口只请求一次。

作者 9823189