引言:
vue项目中动态加载路由组件this. r o u t e . p a t h 获取不正确(获取是‘ / ‘而不是‘ / f o r g e t P w d ’)浏览器中的路由是 / f o r g e t P w d ,路由全局钩子 r o u t e r . b e f o r e E a c h 得到的 p a t h 也是 / f o r g e t P w d , 但是在页面 i n d e x . v u e 中的生命周期 c r e a t e d 获取到的 p a t h 是 / ,这个时候想到 t h i s . route.path获取不正确(获取是‘/‘而不是‘/forgetPwd’) 浏览器中的路由是/forgetPwd,路由全局钩子router.beforeEach得到的path也是/forgetPwd,但是在页面index.vue中的生命周期created获取到的path是/,这个时候想到 this. route.path获取不正确(获取是‘/‘而不是‘/forgetPwd’)浏览器中的路由是/forgetPwd,路由全局钩子router.beforeEach得到的path也是/forgetPwd,但是在页面index.vue中的生命周期created获取到的path是/,这个时候想到this.route.path 的底层获取逻辑是location.href,那我同时去打印location.href,得到的却和router.beforeEach里面得到的一样,也就是说 this.$route.path 和 location.href 得到的值不一样
原因:
问题出在当项目启动时,懒加载方式,路由加载注册的时候没有加载path:‘/forgetPwd’下的$route
查看路由配置 ,懒加载方式
const forgetPwd= r => require.ensure([], () => r(require(’@/components/forgetPwd.vue’)), ‘forgetPwd’)
改成
import forgetPwd from ‘@/components/login/forgetpwd.vue’
这时候在查看路由,发现完美解决