解决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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
JavaScript 高级篇之函数 (四)
Apr 07 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
JavaScript获取当前网页标题(title)的方法
Apr 03 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
Jun 14 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
Jul 01 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
微信小程序提交form操作示例
Dec 30 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
Feb 26 Vue.js
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
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
PHP中非常有用却鲜有人知的函数集锦
2019/08/17 PHP
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
动态加载JS文件的三种方法
2013/11/08 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
jquery实现自定义图片裁剪功能【推荐】
2017/03/08 Javascript
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[00:36]DOTA2风云人物相约完美“圣”典 12月17日不见不散
2016/11/30 DOTA
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
中海讯通笔试题
2015/09/15 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
高三自我鉴定怎么写
2013/10/19 职场文书
行政助理岗位职责
2013/11/10 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
领导党性分析材料
2014/02/15 职场文书
品质口号大全
2014/06/17 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
大学辅导员述职报告
2015/01/10 职场文书
优秀党员个人总结
2015/02/14 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书