vue 刷新当前页面、组件;provide、inject

provide、inject

最外层组件(祖先组件)向其所有子组件注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效;通过在App.vue,声明reload方法,控制router-view的显示或隐藏,去控制页面刷新。

App.vue

<template>
  <div id="app">
    <router-view class="container" v-if="isAlive" />
  </div>
</template>

<script>
export default {
  name: "app",
  data() {
    return {
      isAlive: true
    };
  },
  provide() {
    return {
      reload: this.reload
    };
  },
  components: {},
  created() {},
  methods: {
    reload() {
      this.isAlive = false;
      this.$nextTick(() => {
        this.isAlive = true;
      });
    }
  }
};
</script>

子组件注入reload方法
inject: [“reload”]
在逻辑完成后,直接this.reload(),即可刷新当前页面;

<template>
  <div class="discovery-wrap">     
  </div>
</template>

<script>

export default {
  inject: ["reload"],
  name: "Discovery",
  components: {},
  created() {
    this.$nextTick(() => {
      let _self = this;
      let token = this.token ;
      if (typeof token == "undefined") {
        setTimeout(function() {
          _self.reload();
        }, 2000);
      }
    });
  },
  data() {
    return {
      token: ""
    };
  },
  computed: {},
  methods: {},
  mounted() {}
};
</script>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值