本文知识点比较简单,主要面向vue新人解惑,vue前辈请忽略。
<>强实现功能:强>
见上图,这是一个产品列表,当进入不同列表时应该更新内容。
代码如下:
<强>//路由器配置强>
{ 路径:“/产品/类别”, 名称:“产品”, 组件:{ … } }
<强>//组件js配置强>
安装(){ this.getData(这一点。route.params.category美元); }, 方法:{ getData:函数(类别){ this.axios。get("/产品/?类别)。然后(res=比;{ 常量数据=https://www.yisu.com/zixun/res.data.data; 这一点。利=data.pro; })。抓住(错误=> { 控制台。日志(“初始化错误。”+错误); }); } }
1,点击不同类别,url有变化已正确指向不同的路由,但是内容没有更新
2,由当前类别进入其他类别路由后刷新页面,可正确获取数据
<强>知识点强>
在使用Vue-router做项目时,会遇到如/serviceId: id这样只改变id号的场景。由于router-view是复用的,单纯的改变id号并不会刷新router-view
看除了可以监听数据的变化,路由的变化也能被其监听到
:关键vue为你提供了一种方式来声明”这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的关键属性即可
<强>针对以上,经过本人项目实践以及网友贡献,有三种方法可解决:强>
通过监看听路由(亲测可行)
安装(){ this.getData(这一点。route.params.category美元); }, 方法:{ getData:函数(类别){ … } }, 看:{//通过手表来监听路由变化 “美元路线”:函数(){ this.getData(这一点。route.params.category美元); } }
用:关键来阻止“复用“
具体使用方法:
& lt; router-view:关键="关键"祝辞& lt;/router-view> 计算:{ 键(){ 返回这个。$ route.name !==定义# 63;美元。route.name +新日期():。$ +新日期() } }
<强>提示:强>使用计算属性和日期()可以保证每一次的关键都是不同的,这样就可以如愿刷新数据了
通过vue-router的钩子函数beforeRouteEnter beforeRouteUpdate beforeRouteLeave
计算:mapGetters ([ … ]), beforeRouteEnter(下),从{//在渲染该组件的对应路由被确认前调用//不!能获取组件实例“这”//因为当钩子执行前,组件实例还没被创建 }, beforeRouteUpdate(下),从{//在当前路由改变,但是该组件被复用时调用//举例来说,对于一个带有动态参数的路径/foo/: id,在/foo/1和/foo/2之间跳转的时候,//由于会渲染同样的Foo组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。//可以访问组件实例“这” }, beforeRouteLeave(下),从{//导航离开该组件的对应路由时调用//可以访问组件实例“这” } >之前本人尝试使用“beforeRouteUpdate”,但位得到解决,其他方法没有尝试。
以上内容如果有错误,请各位朋友指出,谢谢。
这篇解决vue更新路由router-view复用组件内容不刷新的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
解决vue更新路由router-view复用组件内容不刷新的问题