Vue 刷新页面的方法

用 provide / inject 组合

原理:
允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。

在App.vue,声明reload方法,控制router-view的显示或隐藏,从而控制页面的再次加载。

<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 {
inject: ['reload'],
}

事件中使用:

this.reload()

其它刷新方法

1. this.$router.go(0)

这种方法虽然代码很少,但是页面会一瞬间的白屏,体验不是很好。

2. location.reload()

这种也是一样,画面一闪,体验不是很好。

3. vue-router

用vue-router重新路由到当前页面,页面是不进行刷新的。

发布了9 篇原创文章 · 获赞 26 · 访问量 7450

猜你喜欢

转载自blog.csdn.net/fufu_dclt/article/details/105135730