问题点:
1. 组件实例是需要缓存的
2. 组件数据加载时需要登录权限
3. 组件被拦截后没有再次获取数据
解决方式:
对于以上三个问题需要分解解决
1. 组件需要缓存的话直接可以 在路由中配置相关元信息字段, 然后在路由渲染出口添加路由缓存标签
2. 组件数据加载时需要登录权限: 这个实现的方式比较多, 可以定义接口返回码, 根据返回码确定是否需要登录, 然后做相应跳转使用 vue-resource 或者 axios 时配置全局拦截器, 当然也必须结合缓存确定登录状态, 来实现拦截跳转在组件生命周期钩子中判断登录状态需要结合缓存, 实现拦截跳转
3. 解决了前两个问题后, 第三个问题来了, 拦截后的组件实例在登录完成后不会加载数据, 因为该组件已经被缓存了, 除非在 activated 函数中获取数据 (这样会违背缓存的初衷), 所以解决凡是就是: 在 mounted 中和获取数据, 在拦截时将本组件手动销毁, 当然在销毁之前(beforeDestroy) 做跳转
来源: https://www.2cto.com/kf/201802/723549.html