vue3中刷新實現


vue3中刷新實現

provide : 向子組件以及子孫組件傳遞數據。接收兩個參數,第一個參數是 key,即數據的名稱;第二個參數為 value,即數據的值
inject : 接收父組件或祖先組件傳遞過來的數據。接收一個參數 key,即父組件或祖先組件傳遞的數據名稱

通過依賴注入(provide和inject)實現自定義頁面刷新事件
原理: 給app.vue中router-view綁定v-if事件,在函數中控制v-if的值在短時間內由true到false再到true,從而使頁面達到刷新效果

刷新實現

app.vue

<template>
  <!-- 子路由 -->
  <router-view v-if="state.showRouter"></router-view>
  <!-- end 子路由 -->
</template>

<script lang="ts">
import { defineComponent, nextTick, provide, reactive, ref } from 'vue'
export default defineComponent({
  setup() {
    const state = reactive({
      showRouter: true,
    })
    function reload() {
      state.showRouter = false
      nextTick(() => {
        state.showRouter = true
      })
    }
    provide('reload', reload)
    return {
      state,
    }
  },
})

刷新頁面

需要用到刷新事件的子組件:

ArticleTable.vue子組件

import { inject } from 'vue'
//注入刷新事件,這里括號中的參數要對應上前面provide中的第一個參數
const reload: any = inject('reload')
const confirm = async (data: any) => {
  await article.DeleteAsync(data.articleId).then(() => {
    reload()
  })
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM