解决vue更新路由router-view复用组件内容不刷新的问题

  

本文知识点比较简单,主要面向vue新人解惑,vue前辈请忽略。

  

<>强实现功能:

  

解决vue更新路由router-view复用组件内容不刷新的问题

  

见上图,这是一个产品列表,当进入不同列表时应该更新内容。

  

代码如下:

  

<强>//路由器配置

        {   路径:“/产品/类别”,   名称:“产品”,   组件:{   …   }   }      

<强>//组件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复用组件内容不刷新的问题