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 相关文章推荐
Jquery绑定事件(bind和live的区别介绍)
Aug 23 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
Sep 08 Javascript
JQuery fileupload插件实现文件上传功能
Mar 18 Javascript
使用vue.js写一个tab选项卡效果
Mar 25 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
利用JS hash制作单页Web应用的方法详解
Oct 10 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
如何重置vue打印变量的显示方式
Dec 06 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
vue+axios实现文件下载及vue中使用axios的实例
Sep 21 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
Sep 06 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 PDO函数库详解
2010/04/27 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
php排序算法实例分析
2016/10/17 PHP
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
2014/05/21 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
js window对象属性和方法相关资料整理
2015/11/11 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
python设置windows桌面壁纸的实现代码
2013/01/28 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python交互式图形编程实例(三)
2017/11/17 Python
python如何将图片转换为字符图片
2020/08/19 Python
Python实现图片拼接的代码
2018/07/02 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
pycharm打开命令行或Terminal的方法
2019/01/16 Python
python实现图片转字符小工具
2019/04/30 Python
python实现五子棋人机对战游戏
2020/03/25 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
机关作风建设自查报告
2014/10/22 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
留学推荐信怎么写
2015/03/26 职场文书
污染环境建议书
2015/09/14 职场文书