vue 项目中刷新页面

之前最常用的是 this.$router.go(0),类似直接点浏览器的刷新按钮,此类方法会导致 URL 刷新时闪烁且用户体验极差,这是强刷新。

解决方法 

        在 app.vue 页面内(如果根组件不叫这个,那就找路由出口 <router-view /> ),通过 v-if 条件渲染是在 DOM树中进行节点的删除和增加,所以浏览器会对其进行回流再渲染。将组件进行卸载,再挂载回去(这期间就会触发生命周期函数,进行请求,数据更新),进行页面的刷新

        在后台管理系统中,一些对话框组件,如果要传值也可以使用这个方法。

<template>
  <div id="app">
    <router-view v-if="isRouterAlive" />
  </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>

然后就可以在任意一个组件内都可以使用 this.reload 方法,实现页面刷新

 inject: ['reload'],
  data () {
    return {}
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值