Vue.js项目刷新当前路由(页面)的方法与实践

简介: 越来越多的前端项目使用MVVM框架Vue.js进行架构开发,充分利用了Vue.js的数据驱动、双向数据绑定、组件化开发以及其优秀的社区生态(官网+第三方扩展支持)等能力。Vue.js在提升性能方面着重的使用了组件复用能力,极大的优化了DOM更新的速度,提升了用户体验。

前言


越来越多的前端项目使用MVVM框架Vue.js进行架构开发,充分利用了Vue.js的数据驱动、双向数据绑定、组件化开发以及其优秀的社区生态(官网+第三方扩展支持)等能力。Vue.js在提升性能方面着重的使用了组件复用能力,极大的优化了DOM更新的速度,提升了用户体验。


Vue-RouterVue黄金伴侣,用于设置路由,管理路由,优秀的钩子函数,简洁粗暴的配置,让它总是那么受人欢迎!


But,但是(人生总是需要些转折,有些惊喜不是....)


使用Vue-Router在进行路由配置时也会带来些问题


  1. 重新进入当前路由时,页面是不进行刷新的


  1. 在进行列表类数据操作时:新增、删除、编辑时可能需要让当前页面刷新


下面就跟随胡哥的风骚走位,一起来探究刷新当前路由(页面)的方式


方法一:暴力解决-强制整个页面进行刷新


  1. 使用this.$router.go(0)函数,可以强制刷新当前页面


  1. 使用window.location.href或者window.location.reload(),强制刷新当前页面


问题: 此两种处理都会是当前页面进行刷新,浏览器进行重新加载,出现页面闪烁和空白,极大的降低了用户体验。


方法二:完美优雅-借助vue的选项/组合


provide/inject


这对选项要组合一起使用,以允许一个祖先组件向其所有子孙后代组件注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里生效 -- 引自Vue.js官网描述


// App.vue组件
<template>
  <router-view v-if="isShow" />
</template>
<sciprt>
 export default () {
    name: 'App',
    data () {
      return {
        // 控制router-view的隐藏与展示
        isShow: true
      }
    },
    // 提供可注入子组件属性
    provide () {
      return {
        reload: this.reload
      }
    },
    // 定义reload方法
    methods: {
      reload () {
        // 先隐藏
        this.isShow = false
        // $nextTick() 将回调延迟到下次 DOM 更新循环之后执行
        this.$nextTick(() => {
          this.isShow = true
        })
      }
    }
  }
</script> 
// NavBar.vue 导航组件
<template>
  <div class="nav-bar">
    // 一定要添加.native修饰符,默认router-link阻止了a链接的默认事件
    <router-link :to="{name: 'Index'}" @click.native="showRouter">首页</router-link>
    <router-link :to="{name: 'Index'}" @click.native="showRouter">首页</router-link>
  </div>
</template>
<script>
export default {
  name: 'NavBar',
  // 接收注入的数据
  inject: [
    'reload'
  ],
  methods: {
    showRouter () {
      // 调用reload方法,刷新整个页面
      this.reload()
    }
  }
}
</script>


相关文章
|
18天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
4天前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
|
18天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
18天前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
6天前
|
CDN
如何在项目中使用Moment.js库?
如何在项目中使用Moment.js库?
|
6天前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
|
17天前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
36 7
|
18天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
JavaScript 前端开发
Javascript刷新全集
一:刷新本页面 前台:window.location.href=window.location.href; 后台:Response.Write("window.location.href=window.
905 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
97 2
下一篇
无影云桌面