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 相关文章推荐
表单内同名元素的控制
Nov 22 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
Jul 30 Javascript
详解Ubuntu安装angular-cli遇到的坑
Sep 08 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 26 Javascript
layui form.render('select', 'test2') 更新渲染的方法
Sep 27 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
php获取操作系统语言代码
2013/11/04 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
JavaScript 字符串与数组转换函数[不用split与join]
2009/12/13 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
JavaScript中的细节分析
2012/06/30 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
小程序自定义日历效果
2018/12/29 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
人力资源管理毕业生自荐信
2013/11/21 职场文书
无传销社区工作方案
2014/05/13 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技