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系列之数值计算
Jun 07 Javascript
javascript向flash swf文件传递参数值注意细节
Dec 11 Javascript
浅谈javascript中createElement事件
Dec 05 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
js实现加载更多功能实例
Oct 27 Javascript
JS表单数据验证的正则表达式(常用)
Feb 18 Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
JavaScript插件Tab选项卡效果
Nov 14 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
Aug 16 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
详解vue中v-on事件监听指令的基本用法
Jul 22 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强制类型转换,慎用!
2013/06/06 PHP
基于PHP制作验证码
2016/10/12 PHP
php 多文件上传的实现实例
2016/10/23 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
有关easyui-layout中的收缩层无法显示标题的解决办法
2016/05/10 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Python适配器模式代码实现解析
2019/08/02 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
Laravel的加密解密与哈希实例讲解
2021/03/24 PHP
工程管理专业毕业生自荐信
2014/01/24 职场文书
外语专业毕业生自荐信
2014/04/14 职场文书
联谊会开场白
2015/06/01 职场文书
北京青年观后感
2015/06/15 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers
MySQL连接控制插件介绍
2021/09/25 MySQL
Java tomcat手动配置servlet详解
2021/11/27 Java/Android