vue实现路由不变的情况下,刷新页面操作示例


Posted in Javascript onFebruary 02, 2020

本文实例讲述了vue实现路由不变的情况下,刷新页面操作。分享给大家供大家参考,具体如下:

背景1:在vue写的后台管理项目中,经常会有增、删、改、查的操作,这些操作只是跟用接口跟后台交互下

既然用接口交互,那肯定就是axios的异步请求,那么就是说后台数据发生了改变,但是前台的数据并没有实时的更新(每次操作完后台把列表数据重新返给你例外,但是这样的话每次交互的数据量就偏大了)

背景2:在使用动态路由配置 /detail/:id 这样的情况下,由于 router-view 是复用的,单纯的改变 id 的值并不会刷新 router-view

所以就要想一个办法,让后台执行完操作后,给前台返一个操作结果,然后前台手动刷新页面

一开始我想到的是用 window.location.reload() 或者 this.$router.go(0) 这两个方法,但是后来发现这两个方法会有短暂的白屏时间,用户体验并不太好,所以就放弃了,看了下别人的做法,整理下面两种方法:

一、用中转站的方式

这种方式意思就是让每次操作完成以后,都让路由跳转到这个中转站页面,然后这个页面获取到进来路由的路径再返回去就可以了,这种方式可以作为解决方法之一,普遍用的还是第二种。

二、provide / inject 的方式

这种方式,就是让通过 provide 让 App.vue 为所有子孙页面注入一个 reload 的方法,然后在需要使用的页面,通过 inject 注入即可,代码如下:

App.vue

<template>
 <div id="app">
  <router-view v-if="isRouterAlive"></router-view>
 </div>
</template>
<script>
export default {
 name: "App",
 provide() {
  return {
   reload: this.reload
  };
 },
 data() {
  return {
   isRouterAlive: true
  };
 },
 methods: {
  reload() {
   this.isRouterAlive = false;
   this.$nextTick(function() {
    this.isRouterAlive = true;
   });
  }
 }
};
</script>

子页面

export default {
  name: 'children',
  inject: ['reload'],
  data(){
    return {}
  }
  methods: {
    delData(){
      //在axios成功的回调里面
      this.reload();
    }
  }
}

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
javascript 写的一个简单的timer
Jul 30 Javascript
jQuery实现动画效果的实例代码
May 07 Javascript
jQuery实现复选框成对选择及对应取消的方法
Mar 03 Javascript
javascript中的Base64、UTF8编码与解码详解
Mar 18 Javascript
javascript生成大小写字母
Jul 03 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
jquery动态遍历Json对象的属性和值的方法
Jul 27 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
vue+element实现批量删除功能的示例
Feb 28 Javascript
VSCode使用之Vue工程配置eslint
Apr 30 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 #jQuery
基于node+vue实现简单的WebSocket聊天功能
Feb 01 #Javascript
基于vue和websocket的多人在线聊天室
Feb 01 #Javascript
node crawler如何添加promise支持
Feb 01 #Javascript
js 计算月/周的第一天和最后一天代码
Feb 01 #Javascript
js获取本日、本周、本月的时间代码
Feb 01 #Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 #Javascript
You might like
php实现ping
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
js返回上一页并刷新代码整理
2012/12/21 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
python+pyqt实现12306图片验证效果
2017/10/25 Python
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
python实现静态web服务器
2019/09/03 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
财务助理岗位职责
2013/11/10 职场文书
初一家长会邀请函
2014/01/31 职场文书
初中生期末评语大全
2014/04/24 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js