当前位置: 首页 > Web前端 > vue.js

vue-router组件复用问题

时间:2023-03-31 21:27:14 vue.js

我们知道vue的一个重要概念就是组件化,即将复用的功能点提取为组件,需要使用的页面只需要引用组件就可以得到相应的功能点。我们在vue-router中动态加载视图的代码可能如下所示。{path:'/tabLayout',name:'tabLayout',component:resolve=>require(['@/components/layouts/TabLayout'],resolve)}但在同一页面多次使用同一个组件时,其created和mounted只有在第一次加载时才会执行。因为只创建了一个实例,如果多次调用该实例,多次调用会相互干扰。为了在不互相干扰的情况下多次调用组件,可以采用一些方法。当监听路由切换时,监听路由获取参数,并根据参数加载新的数据。watch:{'$route'(to,from){letdataId=this.$route.params.dataId;this.initData(dataId);}}缺点:组件被重新渲染,组件上的内容随着路由参数的变化而丢失。如果不想每次切换页面都重新渲染,就需要另辟蹊径了。路由器视图密钥将路由器视图密钥设置为$route.fullPath。由于前后两条路由的$route.fullPath不同,所以不会强制组件重用。这也意味着组件的生命周期钩子会被再次调用,第二次调用中created和mounted中的内容会被再次执行。计算:{key(){returnthis.$route.name!==undefined?this.$route.name:this.$route}}参考:https://www.h5w3.com/8764.html