详解解决Vue相同路由参数不同不会刷新的问题


Posted in Javascript onOctober 12, 2018

通常情况下我们喜欢设置keepAlive 包裹 router-view

<div id="app">
    <keep-alive>
      <router-view></router-view>
    </keep-alive>
</div>

同时在created 中触发请求,在路由参数不同的情况下并不会执行对应的操作。

解决方法:

1、给 router-view 设置 key 属性为路由的完整路径

<keep-alive>
   <router-view :key="$route.fullPath"></router-view>
</keep-alive>

这种方法我觉得应该是一劳永逸的方法,可能对性能造成一定损耗。不适用于一个tab切换路由并加载列表的组件,会造成页面白屏,dev模式不会自动刷新,是个坑

2、官方给出的方法是通过 watch 监听路由变化,做判断路由路径然后调用响应的方法

watch: {
 '$route' () {
 if (this.$route.path === 'test') {
  this.test();
 }
 }
}
watch: {
 'id': {
 handler: 'test',
 //调用方法
 immediate: true,
 //进入立即执行一次
 }
},

这两种方法推荐第一种,第二种需要先对参数id进行赋值

3、通过组件导航守卫来设置对应的meta 属性

beforeRouteEnter: (to, from, next) = > { // 写在当前组件
 to.meta.keepAlive = false  
 next()
},
 beforeRouteLeave: (to, from, next) = > { //写在前一个组件
 to.meta.keepAlive = false
 next()
},

个人比较喜欢第一种方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 设计模式学习 Singleton
Jul 27 Javascript
jQuery设置和获取HTML、文本和值示例
Jul 08 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
jQuery实现美观的多级动画效果菜单代码
Sep 06 Javascript
Bootstrap Table使用心得总结
Nov 29 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
Jun 16 jQuery
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 Javascript
vue-cli2.9.3 详细教程
Apr 23 Javascript
如何为你的JavaScript代码日志着色详解
Apr 08 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
详解webpack loader和plugin编写
Oct 12 #Javascript
深入理解Angularjs 脏值检测
Oct 12 #Javascript
vue中render函数的使用详解
Oct 12 #Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
Oct 12 #Javascript
Vue插值、表达式、分隔符、指令知识小结
Oct 12 #Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 #Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 #Javascript
You might like
建立文件交换功能的脚本(一)
2006/10/09 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
2018/04/25 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
使用python实现名片管理系统
2020/06/18 Python
Python利用命名空间解析XML文档
2020/08/10 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
早餐连锁店计划书
2014/01/08 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
同学聚会邀请函
2015/01/30 职场文书
护士求职自荐信范文
2015/03/04 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js