
一般情况会封装一个refreshData来重新刷新数据,但是有些情况参数比较复杂,写这种刷新方法需要注意很多东西还要注意时机问题,所以可以在某些情况下直接去刷新组件来刷新数据。
如何是调用组件内部的方法这样调用就行了
const projectTeamMembersRef = ref(null)
const getTrainingSubProgramList = async (_trainingProgramId: any) => {
state.pageParam.trainingProgramId = _trainingProgramId
// 改变key刷新组件
// state.reloadKey = state.reloadKey + 1
// 调用组件内部的方法
if (projectTeamMembersRef && projectTeamMembersRef.value) {
projectTeamMembersRef.value.refreshData()
}
}
方法一:使用 key 强制重新渲染
通过改变组件的 key 属性,Vue 会认为这是一个全新的组件实例,从而强制重新渲染。
<template>
<ProjectTeamMembers
ref="projectTeamMembersRef"
v-if="state.pageParam.trainingProgramId"
:key="reloadKey"
:programType="1"
:programID="state.pageParam.trainingProgramId"
></ProjectTeamMembers>
<button @click="reloadComponent">Reload Component</button>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const state = ref({
pageParam: {
trainingProgramId: 123, // 示例数据
},
});
const projectTeamMembersRef = ref(null);
const reloadKey = ref(0); // 初始化 key
const reloadComponent = () => {
reloadKey.value += 1; // 改变 key 值以强制重新渲染组件
};
return {
state,
projectTeamMembersRef,
reloadKey,
reloadComponent,
};
},
};
</script>
在这个例子中,每次点击按钮时,reloadKey 的值都会增加,从而导致 ProjectTeamMembers 组件被重新渲染。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
排名
8
文章
231
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术