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响应回车键直接提交表单操作代码
Jul 25 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
Nov 18 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
利用JS判断客户端类型你应该知道的四种方法
Dec 22 Javascript
vue2中使用less简易教程
Mar 27 Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
May 06 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 Javascript
JavaScript 几种循环方式以及模块化的总结
Sep 03 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
收音机怀古---春雷3P7图片欣赏
2021/03/02 无线电
简单的页面缓冲技术
2006/10/09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
js点击选择文本的方法
2015/02/09 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
[49:58]完美世界DOTA2联赛PWL S3 Magma vs DLG 第一场 12.18
2020/12/19 DOTA
Python getopt模块处理命令行选项实例
2014/05/13 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python将字典转换为XML的方法
2020/08/01 Python
python 实现音频叠加的示例
2020/10/29 Python
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
先进集体获奖感言
2014/02/13 职场文书
董事长岗位职责
2015/02/13 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
大学入学感言
2015/08/01 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android