Vue 3.x

Vue3 使用 provide inject 刷新路由

2020-11-11  本文已影响0人  阿畅_

Vue3 中使用 provide inject 刷新部分路由页面

我的使用背景
为什么要这么做?不直接使用 location.reload(),这么做的好处是?
但是使用它的弊端是:
// App.vue
<template>
  <router-view v-if="showPage"/>
</template>
<script lang="ts">
import { defineComponent, nextTick, provide, ref } from 'vue'
export default defineComponent({
  setup () {
    const showPage = ref<boolean>(true)
    const onRefresh = () => {
      showPage.value = false
      nextTick(() => {
        showPage.value = true
      })
    }
    provide('reload', onRefresh)
    return {
      showPage
    }
  }
})
</script>
<script lang="ts">
import { defineComponent, inject } from 'vue'
import { useStore } from 'vuex'
export default defineComponent({
  setup () {
    const store = useStore()
    const onRefresh = inject<Function>('reload')

    const handleClick = () => {
      // 更新 Vuex 
      store.commit('setMatchUserId', 123)
      // 刷新当前页面
      onRefresh && onRefresh()
    }
    return {
      handleClick
    }
  }
})
</script>
上一篇 下一篇

猜你喜欢

热点阅读