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


Posted in Javascript onNovember 04, 2019

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

实现功能:

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

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

代码如下:

//router配置

{
  path: "/products/:category",
  name: "Products",
  components: {
  ...
  }
 }

//组件js配置

mounted() {
  this.getData(this.$route.params.category);
 },
 methods: {
  getData: function(category){
   this.axios.get("/products/" + category).then(res => {
 
    const data = res.data.data;
    this.pros = data.pro;
   }).catch(error => {
    console.log("error init." + error);
   });
  }
 }

目前症状:

1、点击不同类别,url有变化已正确指向不同的路由,但是内容没有更新

2、由当前类别进入其他类别路由后刷新页面,可正确获取数据

知识点

在使用Vue-router做项目时,会遇到如/serviceId/:id这样只改变id号的场景。由于router-view是复用的,单纯的改变id号并不会刷新router-view

watch 除了可以监听数据的变化,路由的变化也能被其监听到

:key vue 为你提供了一种方式来声明“这两个元素是完全独立的——不要复用它们”。只需添加一个具有唯一值的 key 属性即可

针对以上,经过本人项目实践以及网友贡献,有三种方法可解决:

方法一:通过 watch 监听路由(亲测可行)

mounted() {
 this.getData(this.$route.params.category);
},
methods: {
 getData: function(category){
 ...
 }
},
watch: { //通过watch来监听路由变化
 "$route": function(){
 this.getData(this.$route.params.category);
 }
}

方法二:用 :key 来阻止“复用”

具体使用方法:

<router-view :key="key"></router-view>
 
computed: {
 key() {
 return this.$route.name !== undefined? this.$route.name +new Date(): this.$route +new Date()
 }
}

tips:使用computed属性和Date()可以保证每一次的key都是不同的,这样就可以如愿刷新数据了

方法三:通过 vue-router 的钩子函数 beforeRouteEnter beforeRouteUpdate beforeRouteLeave

computed:mapGetters([
 ...
]),
beforeRouteEnter (to, from, next) {
 // 在渲染该组件的对应路由被 confirm 前调用
 // 不!能!获取组件实例 `this`
 // 因为当钩子执行前,组件实例还没被创建
},
beforeRouteUpdate (to, from, next) {
 // 在当前路由改变,但是该组件被复用时调用
 // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
 // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
 // 可以访问组件实例 `this`
},
beforeRouteLeave (to, from, next) {
 // 导航离开该组件的对应路由时调用
 // 可以访问组件实例 `this`
}

本人尝试使用"beforeRouteUpdate",但位得到解决,其他方法没有尝试。

以上内容如果有错误,请各位朋友指出,谢谢。

这篇解决vue更新路由router-view复用组件内容不刷新的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
js实现无缝滚动图
Feb 22 Javascript
js读取json文件片段中的数据实例
Mar 09 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
Nov 04 #Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 #Javascript
element-ui table组件如何使用render属性的实现
Nov 04 #Javascript
Vue 解决多级动态面包屑导航的问题
Nov 04 #Javascript
vue+elementUI动态生成面包屑导航教程
Nov 04 #Javascript
VUE+elementui面包屑实现动态路由详解
Nov 04 #Javascript
Vuex,iView UI面包屑导航使用扩展详解
Nov 04 #Javascript
You might like
php截取中文字符串不乱码的方法
2013/12/25 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
js 操作符汇总
2014/11/08 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
python实现识别相似图片小结
2016/02/22 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
python web框架 django wsgi原理解析
2019/08/20 Python
原生python实现knn分类算法
2019/10/24 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
求职毕业生自荐书
2014/02/08 职场文书
《秋姑娘的信》教学反思
2014/02/28 职场文书
相亲大会策划方案
2014/06/05 职场文书
交通事故委托书范本
2014/09/28 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android