# vue刷新页面

之前在项目中遇到过刷新页面的问题。直接location.href的话,状态丢失可以通过插件解决,白屏体验就不太好了。this.$router.go(0)也会白屏。当时想了一个办法是跳转到一个指定页面,在那个页面再跳转回来。今天看到有人用provide和reject来解决,体验很好。

# 实现

在app.vue的加上v-if属性

<router-view v-if="isRouterAlive"></router-view>

data () {
    return {
      isRouterAlive: true
    }
}

methods: {
  reload () {
    this.isRouterAlive = false
    this.$nextTick(function() {
        this.isRouterAlive = true
    })
  }
}

把这个函数 provide 出去

provide () {
  return {
    reload: this.reload
  }
}

当我们需要刷新的时候,在需要的页面上加上这个函数就可以了

inject: ['reload'],

在需要用到这个函数的地方去引用就行了

refresh () {
  this.reload()
}
Last Updated: 11/9/2019, 5:23:09 PM