其他分享
首页 > 其他分享> > 使用router.beforeEach时,router.beforeEach执行了两次,导致meta中的数据出错

使用router.beforeEach时,router.beforeEach执行了两次,导致meta中的数据出错

作者:互联网

报错:

看到这样的报错,我再meta那里查了很久,都没有找到原因,于是将关注点转移到router.brforeEach上。

 router.beforeEach代码:

 

 修改router.beforeEach的代码,并测试:

代码: 

结果:

a打印了两次,452行的from和453行的to的地址分别打印了两次 ,两次显示的地址不同,从图中可以看出,多了个item.path这个中间过渡的地址,那么,这个地址是怎么来的呢?(其中打印的2的影响不大),对此,我首先想到了,先看看跳转路由那个地方是怎么回事。

然后发现跳转路由地方的代码:

这里 router-link的to属性没有加冒号,而我对to属性传的值又是动态的,而里面传的值又是多出来的item.path,先大胆推测一波,这就是执行两次的原因,将to改为:to,测试一下。

结果:

没有执行两次了,问题算是解决了。

可是由此也产生了一个疑问,按理来说,to 属性在没有加 :的时候,里面的值应该是一个字符串,而我这种情况,就是跳转到了一个没有定义的路由上,可是为什么在跳转到一个没有定义的路由上之后,又自动跳转到了item.path作为变量时所指向的那个路由呢?

标签:beforeEach,两次,item,meta,跳转,router,路由
来源: https://blog.csdn.net/nihaotdb/article/details/120593697