vue项目 使用provide、inject无闪烁刷新当前页面

解决的办法及遇到的问题:

 

  • this.$router.go(0) 这种方法虽然代码很少,只有一行,但是体验很差。页面会一瞬间的白屏,体验不是很好
  • 用 vue-router 重新路由到当前页面,页面是不进行刷新的。
  • location.reload() 这种也是一样,画面一闪,体验不是很好

推荐解决方法:

用 provide / inject 组合

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

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

App.vue

export default {
  name: 'app',
  // 提供reload方法
  provide: function () {
    return {
      reload: this.reload
    }
  },
  data() {
    return {
      isRouterAlive: true,
    }
  },
  methods: {
    reload() {
      this.isRouterAlive = false
      this.$nextTick(function() {
        this.isRouterAlive = true;
      })
    }
  }
}

在需要用到刷新的页面。在页面注入 App.vue 组件提供(provide)的 reload 依赖,在逻辑完成之后(删除或添加...),直接

this.reload() 调用,即可刷新当前页面。

注入 reload 方法

export default {
        name: "registrationDetails",
        components: {spikeListView, successSpikeListView},
        inject: ['reload'],//注入reload
        data() {
            return {}
        }
}

直接调用 this.reload()

methods:{
    onSubmit(){
        this.reload();
    }
}

这样就完成了。如果能帮到你,可以关注一下~


喜欢博主的可以点赞关注一下

长得美的,长得帅的都关注了

现在就差你了

还不长按关注一下


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值