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 select控件的相关操作实现代码
Sep 14 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
May 30 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
javascript制作的cookie封装及使用指南
Jan 02 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
Feb 25 Javascript
第九篇Bootstrap导航菜单创建步骤详解
Jun 21 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 Javascript
小程序外卖订单界面的示例代码
Dec 30 Javascript
JavaScript闭包原理与用法学习笔记
May 29 Javascript
详解vue 组件的实现原理
Nov 12 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 变量定义方法
2009/06/14 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
python基础教程之缩进介绍
2014/08/29 Python
python标准算法实现数组全排列的方法
2015/03/17 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
酒店中秋节促销方案
2014/01/30 职场文书
销售总经理岗位职责
2014/03/15 职场文书
企业标语口号
2014/06/10 职场文书
中专生自荐信
2014/06/25 职场文书
公司户外活动总结
2014/07/04 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016新年问候语大全
2015/11/11 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL