key的作用


由于 Vue 会复用相同组件, 所以当同一个组件不同路由发生跳转时将不在执行created, mounted之类的钩子函数 , 设置key之后会在虚拟DOM阶段比对跳转前后得key值,如果不同则重新销毁重建页面

key的属性值

key属性值为 $route.path

<router-view :key="$route.path"/> 

1.当路由地址变化为 /category/sub1 ==> /category/sub2时

由于这两个路由的$route.path不一样, 所以组件被强制重新加载

相关钩子加载顺序为 : beforeRouteUpdate => created => mounted

2.当路由地址变化为 /category/sub?id=1 ==> /category/sub?id=1时

由于这两个路由的$route.path一样, 所以组件被复用, 不重新加载

相关钩子加载顺序为 : beforeRouteUpdate

key属性值为 $route.fullPath

<router-view :key="$route.fullPath"/> 

1.当路由地址变化为 /category/sub1 ==> /category/sub2时

2.当路由地址变化为 /category/sub?id=1 ==> /category/sub?id=1时

这两种情况由于这两个路由的$route.fullPath都不一样, 所以组件被强制重新加载

相关钩子加载顺序为 : beforeRouteUpdate => created => mounted

Logo

前往低代码交流专区

更多推荐