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 相关文章推荐
JS 控制小数位数的实现代码
Aug 02 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
解析Javascript单例模式概念与实例
Dec 05 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
Dec 27 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
react路由配置方式详解
Aug 07 Javascript
基于Vue实例对象的数据选项
Aug 09 Javascript
vue-cli常用设置总结
Feb 24 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
vue源码中的检测方法的实现
Sep 26 Javascript
node事件循环和process模块实例分析
Feb 14 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的5个安全措施小结
2012/07/17 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
2019/10/16 jQuery
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
JavaScript实现商品评价五星好评
2020/11/30 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
在pycharm中实现删除bookmark
2020/02/14 Python
使用Python第三方库pygame写个贪吃蛇小游戏
2020/03/06 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
感恩节活动方案
2014/01/27 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
生产车间管理制度
2015/08/04 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
Go 语言结构实例分析
2021/07/04 Golang
浅谈Vue的computed计算属性
2022/03/21 Vue.js