vue3+ts父子组件以及单页面刷新的方法

父子组件刷新页面:

父组件定义函数reset,子组件props接收

示例一:

父组件
//ts删减部分:
import { deleteCompanyById, findAllCompanys } from '@/api/company'
import { usePureFetch } from '@/nexus/useFetch'
import type CompanyAddEditDialog from './dialog/CompanyAddOrUpdate.vue'
import type { Company } from '@/models/company'

export const useCompanyInfo = function () {
  const { data, loading, reFetch } = usePureFetch(findAllCompanys)

  const reset = () => reFetch()
  return {
 companyData,
    loading,
    companyAddEditRef,
    openSaveAndUpdate,
    deleteCompany,
    reset,
  }
}
vue删减部分:
<template>
    .......
    <company-add-edit-dialog ref="companyAddEditRef" :reset="reset" />
</template>

<script setup lang="ts">
import { useCompanyInfo } from './models/useCompanyInfo'
import CompanyAddEditDialog from './dialog/CompanyAddOrUpdate.vue'

const {
  openSaveAndUpdate,
  loading,
  companyData,
  deleteCompany,
  companyAddEditRef,
  reset,
} = useCompanyInfo()
</script>

//子组件
const props = defineProps<{ reset: Function }>()
/**
 * 提交表单
 */
async function submitCompany() {
  saving.value = true
  try {
    await companyFormRef.value?.validate()
    const res = await saveCompany(companyFormData.value)
    if (res.success) {
      ElMessage.success('提交成功')
      companyDialogVisible.value = false
      props.reset()
    }
  } catch (error) {
    //
  } finally {
    saving.value = false
  }
}


示例二: 

页面刷新方法:

App.vue:

<script setup lang="ts">
const isRouter = ref(true)
const reload = () => {
  isRouter.value = false
  nextTick(() => {
    isRouter.value = true
  })
}
provide('reload', reload)
</script>

<template>
  <router-view v-if="isRouter"></router-view>
</template>
<style>
body {
  margin: 0;
}
</style>

要使用的页面:

import { inject } from "vue";
const reload = inject("reload");

然后在需要调用刷新操作的代码下执行:

reload();

即可刷新页面。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值