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

实现功能:

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

代码如下:

//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复用组件内容不刷新相关推荐

  1. vue刷新当前路由:router-view 复用组件时不刷新的3种解决方案总结

    vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用.vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的页面应 ...

  2. 【Vue】路由Router嵌套的实现及经典案例

    Vue 中路由在使用的时候 嵌套 使用是非常频繁的,所以本文我们就来通过案例介绍一下嵌套路由的使用. Vue路由嵌套 先来准备一个普通的路由案例: <!DOCTYPE html> < ...

  3. 【vue】路由Router基础详解,带你快速入门~

    什么是路由 后端路由: 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源. 前端路由: 对于单页面应用程序来说,主要通过改变URL中的 hash(#) 来实现不同页 ...

  4. 【Vue】路由Router传参的两种方式(详解)

    本文我们来介绍一下Vue中的 路由传参 问题,首先我们来准备一个基本路由的页面,如下: <!DOCTYPE html> <html lang="en"> & ...

  5. 解决 Vue 中路由跳转相同路径页面不刷新的问题

    vue 中同一路由跳转由于不会重新执行生命周期,所以数据不更新.不管是动态路由,还是传参都不会刷新页面 最简单最常用的方式是监听路由变化,在路由发生变化后执行一系列操作 watch: {$route( ...

  6. span组件内容的刷新(笔记)

    span是最简单的容器,可以当作一个形式标签,其取值赋值方法有别于一般的页面元素.//赋值$("#spanid").html(value)//取值$("#spanid&q ...

  7. nuxt页面跳转_nuxt 项目如何解决组件复用时页面不刷新的问题

    组件复用会在两种情况下发生: 1.使用 keep-alive 时,页面再次跳转时,数据不更新 每一次路由的切换都会导致页面被重新渲染,无论是各种钩子还是异步获取数据函数都会被执行,为了提高网站性能,可 ...

  8. Vue day06 路由

    Vue day06 路由 补充 父传子props的约束条件: 父传子:子接收用对象方式,那么可以增加约束条件 在child.vue中props: {msg:{// 必填项required:true,/ ...

  9. vue路由参数改变,组件数据没重新更新问题

    最近一段时间在用vue做项目,遇到一个很纠结的问题,本来是两个页面样式结构相似,就是数据不同,所以在router里面配置了一个id参数,发现vue路由参数改变,组件数据没重新更新,查了一下官方文档,发 ...

  10. Vue之单文件组件的数据传递,axios请求数据及路由router

    1.传递数据 例如,我们希望把父组件的数据传递给子组件. 可以通过props属性来进行传递. 传递数据三个步骤: 步骤1:在父组件中,调用子组件的组名处,使用属性值的方式往下传递数据 <Menu ...

最新文章

  1. 汇编语言(王爽 第三版)检测点9.1 解决-a无法输入jmp dword ptr es:[1000h]
  2. kali系统破解WPA密码实战
  3. 用java线程绘制图案_关于多线程:使用线程在java中绘制面板
  4. CUDA out of memory in pytorch
  5. HTML、CSS、JS都有哪些区别
  6. php阿里的同步工具canal,基于阿里的Canal实现数据同步
  7. [Halcon] 算子学习_Calibration_Calibration Object
  8. Keepalived + Nginx 实现高可用 Web 负载均衡
  9. 面临重重挑战 华为造车之路任重道远
  10. WPF Logical Tree vs. Visual Tree
  11. 如何调整金格电子章服务器印章_电子签章赋能勘察设计新动力
  12. java socket编程—单客户端与服务器通信
  13. x200装linux驱动下载,佳能 ThinkPad X200 Tablet 驱动程序下载-更新佳能软件(平板电脑)...
  14. Qt音视频开发41-人脸识别嵌入式
  15. 搭建微商城平台,新商云提供源码部署只需3分钟
  16. Fedora14源代码获取方法----直接到官网去下载
  17. 【大数据作业02】HDFS中的名称节点和数据结点的具体功能
  18. 基于高通SNPE推理引擎的yolov5目标检测算法
  19. bug解决 2021-09-20 build之后出现shader消失的原因之一
  20. 逃离「大厂」回乡创业,用氚云攻克流量瓶颈,年入1300万

热门文章

  1. 对话周鸿祎:从程序员创业谈起
  2. window命令行启动Mysql并安装服务
  3. 羊坊店不眠夜(续集)
  4. 查看mysql二进制日志
  5. JetS3t使用说明
  6. 函数内联inline
  7. 数据分页模块系列 (二) 完美封装PageModel实现分页模块
  8. SQLServer2008设置 开启INTERNET远程连接(转)
  9. 12.程序员的自我修养---系统调用与API
  10. 9.TCP/IP 详解卷1 --- IP 选路