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

  vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。

  对于路由,不同的路由跳转,vue会帮我们刷新路由,但是我今天要说的是,同一路由刷新我们的解决方法。

问题背景:

  点击用户头像 => 进入用户个人中心,在用户个人中心里点击其他用户的头像,我希望显示被点击用户的个人中心,但只看到了路由参数在发生变化,页面内容并没有更新。

<script>export default {data() {return { data: {} } }, methods: { fetchDate() { // 使用 axios获取数据  ...... }, created() { this.fetchDate(); } } </script>

解决办法:

  使用 watch,观察路由,一旦发生变化便重新获取数据!

<script>export default {data() {return { data: {} } }, methods: { fetchDate() { // 使用 axios获取数据  ...... }, created() { // 组件创建完后获取数据, // 此时 data 已经被 observed 了 this.fetchDate(); }, watch: { // 如果路由有变化,会再次执行该方法 "$route": "fetchDate" } } </script>

拓展学习

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

  当然,我们可以在点击事件上加上router.go(0),强制刷新整个页面来满足效果。但页面整体的刷新会使体验下降,并且作为个人也不是很能接受这样的方法。在查阅了一些资料后,发现可以有以下两种方法可以解决问题。

1、使用watch方法

  watch方法据说是官方推荐的方法(抱歉,我没好好看文档)。当id发生变化时,'$route'也会相应地发生变化,因此可以通过watch的方法来进行操作

watch: {'$route': function (to, from) {// 我这里还是用了Vuex,不过应该不影响理解this.$store.dispatch('updateActiveTemplateId', this.$route.params.templateId)// 通过更新Vuex中的store的数据,让数据发生变化this.getTemplateById()}
},

2、通过改变router-view中的key来达到刷新组件的目的,我现在用的就是这种方法(因为我使用的按需加载,所以加载组件也不会加载所有界面)

<router-view :key="activeDate"></router-view>
//我用了一个简单粗暴的方式来改变key,时间戳(捂脸)
//this.activeDate = new Date()

3、还有一种官方文档的方法

  后来看博客有了新方案——beforeRouteLeave

  在组件内直接使用,前提是你用了vue-router:

beforeRouteLeave (to, from, next) {// 导航离开该组件的对应路由时调用// 可以访问组件实例 `this`
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KUKA---US2电源的安全属性-------老款硬线连接实现的DRIVE安全STO SBC 、新款基于Safety over EtherCAT 网络帧实现的DRIVE安全STO SBC

安全双回路的监控&#xff1a;&#xff08;工业上的安全&#xff0c;是指安全等级&#xff0c;没有绝对的安全&#xff09; 1. 机械式&#xff1a;监控关断继电器的辅助反馈触点&#xff0c;这个关断继电器包含机械联锁触点&#xff0c;这样反馈触点和主触点可以同步开关动…

C#6.0中$的用法

C#6.0中$的用法 这里注意只有VS2015及以上VS版本才支持这样写&#xff01; 如果使用vs2015以下版本就去用string.format()吧&#xff01; //C#6.0中$的用法&#xff1a;是为了替代string.format();//原先赋值需要占位符和变量&#xff0c;当需要拼接多个变量会造成语句过长等不…

Oracle密码过期问题 ORA-28001:the password has expired

如果已经过期了&#xff0c;首先需要修改密码&#xff0c;然后设置密码为无限期。修改以sys用户登陆。 修改密码&#xff1a;alter user username identified by password 密码可以和之前的密码相同也可以不同。 修改数据库密码为无限期&#xff1a; Oracle的密码过期规则是用…

X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较

&#xfeff;&#xfeff;X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较 Profisafe安全输入信号US2信号有待深入&#xff08;通过外部PLC &#xff1a;&#xff09; &#xfeff;&#xfeff;

预处理指令pragma常见用法集锦(#pragma once、#pragma comment和#pragma warning)

#pragma once&#xff1a; 这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被编译一次&#xff0c;避免文件被重复包含。 *********************************** 例如 ***************************************** 头文件中的 #if _MSC_VER > 100…

var类型推断关键字

目录var 类型推断介绍var的一个例子&#xff1a;编程遵循规则var 类型推断介绍 使用var定义变量时&#xff0c;用var关键字替代实际类型。编译器可以根据变量的初始化值自行“推断”变量的类型。 例如&#xff1a; var A 0&#xff1b; 等价于 int A 0&#xff1b;var的一个…

《程序员修炼之道》笔记(九)

*续 第八章 注重实效的项目 1. 无处不在的自动化 文明通过增加我们不假思索就能完成的重要操作的数目而取得进步。 无论是构建和发布流程、是书面的代码复查工作、还是其他任何在项目中反复出现的任务&#xff0c;都必须是自动的。人工流程不能保证一致性&#xff0c;也无法保证…

flutter image boxfit

直接从官网文档中复制记录&#xff0c;方便以后查看contain → const BoxFitAs large as possible while still containing the source entirely within the target box.const BoxFit(1)cover → const BoxFitAs small as possible while still covering the entire target box…

rvm RuvyGem Cocoapods brew

开始的时候&#xff0c;我仅想升级一下cocoapods的版本&#xff0c;因为我xcode报三十多个相似警告&#xff0c;说第三方找不到相应文件&#xff0c;我看cocoapods版本有1.0.1&#xff0c;而我使用的依旧是1.0.0的老版本。当我升级cocoapods时&#xff0c;需要使用gem来更新coc…

Linux系统目录说明

以前稍稍接触过Linux系统&#xff0c;现今&#xff0c;因工作需要要更进一步学习Linux系统的相关程序开发。因此对于目录&#xff08;路径&#xff09;的了解及很重要了。/bin&#xff1a;是Binary的缩写&#xff0c;这里保存了一百多个Linux下常用的命令、工具&#xff1b;这是…

const常量用法

目录定义语法特点优点定义 常量就是在使用过程中不会变化的量叫做常量。 语法 const int A 100;//常量不允许改变特点 常量必须在声明时初始化&#xff1b;常量的值必须在编译时就定义好&#xff1b;常量总是隐式静态的&#xff1b; 优点 易读&#xff0c;易于程序修改&…

斯坦福大学机器学习——高斯判别分析

转自 http://blog.csdn.net/linkin1005/article/details/39054023 同朴素贝叶斯一样&#xff0c;高斯判别分析&#xff08;Gaussian discriminant analysismodel, GDA&#xff09;也是一种生成学习算法&#xff0c;在该模型中&#xff0c;我们假设y给定的情况下&#xff0c;x服…

嘉实多RO150合成齿轮油

&#xfeff;&#xfeff;Optigear ™合成 RO 是一个特殊的高性能&#xff0c;长期多级油特别为齿轮 轨道交通&#xff0c;机械工程应用中&#xff0c;一个极端的气候条件和长期使用。 “ Microflux 跨的添加剂组合是免费的固体润滑剂&#xff0c;甚至适应迅速变化的环境和积极…

线程队列-queue

使用队列的目的&#xff1a;解耦&#xff0c;使程序之间实现松耦合&#xff1b;提高处理效率FIFO 先进先出&#xff0c;first in first outLIFO 后入先出&#xff0c;last in first out生产者消费者模型使用方式1 import queue 2 3 #创建队列对象&#xff0c;设置队列大小ma…

MapGIS转Shp文件的单位问题

MapGIS转Shp文件的单位问题 原文:MapGIS转Shp文件的单位问题在MapGIS浏览查看一下数据&#xff0c;各种不习惯&#xff1b;用mapgis自带的转shp功能&#xff0c;属性表会出错&#xff1b;利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式。但经常会遇到一个…

halcon2D Metrology测量算子,卡尺测量算子,持续更新

目录2D Metrology1. add_metrology_object_circle_measure2. add_metrology_object_ellipse_measure3. add_metrology_object_generic4. add_metrology_object_line_measure5. add_metrology_object_rectangle2_measure6. align_metrology_model7. apply_metrology_model8. cle…

项目经理的职责

项目经理的职责&#xff1a; 1、项目范围的定义 2、项目计划的制定、分解、分配、协调、汇报 3、项目质量控制 4、项目需求变更配置 工作职责&#xff1a; 1、负责产品的研发任务的立项计划及实施&#xff1b; 2、负责收集统计各项资料数据&#xff0c;完成自主研发部…

显示/隐藏Mac系统中所有的隐藏文件

显示&#xff1a; 在终端输入:defaults write com.apple.finder AppleShowAllFiles YES隐藏: 在终端输入:defaults write com.apple.finder AppleShowAllFiles NO然后重启Finder即可(先点击左上角的苹果图标&#xff0c;再选强制退出&#xff0c;然后选中Finder&#xff0c;点击…

机械零点、MAM 文件 、 EMT标定原理

&#xfeff;&#xfeff; 机械零点、MAM 文件、EMT标定原理。 可调节的机械零点&#xff0c;不需要MAM文件&#xff0c;使之成为90度。 不可调节的机械零点&#xff0c;需要MAM文件修正&#xff0c;使之成为90度。 带负载的偏移补偿、带负载的偏移补偿mastering。做过带负…