Vue 3.2 父组件控制子组件弹窗

1,573 阅读1分钟

通过父组件的点击事件,对子组件弹窗进行显示隐藏控制。父子传值通信。

子组件弹窗 <ComponentsDrawer />

父组件
//:isShowDrawer="isShowDrawer" 父组件传值给子组件
//@close-drawer="closeDrawer" 子组件通过emit事件,来修改父组件的值
 <ComponentsDrawer :isShowDrawer="isShowDrawer" @close-drawer="closeDrawer" />
 
<script setup lang="ts">
const isShowDrawer = ref(false);
function editBtnDrawer() {
	isShowDrawer.value = true;
}
// 关闭弹窗
function closeDrawer() {
	isShowDrawer.value = false;
}
</script>
子组件
<template>
 <div class="drawer">
   <el-drawer :model-value="isShowDrawer" title="I am the title" direction="rtl" :destroy-on-close="true" @close="closeDrawer">
    <span>Hi, there!</span>
   <template #footer>
    <el-button @click="closeDrawer">取消</el-button>
   </template>
  </el-drawer>
 </div>
</template>
<script setup lang="ts" name="componentsDrawer">
const props = defineProps({
	isShowDrawer: Boolean
});
const { isShowDrawer } = toRefs(props); //数据解构

// onMounted(() => {
// 	console.log(isShowDrawer.value);
// });
通知父组件修改值
const emit = defineEmits(["closeDrawer"]);
function closeDrawer() {
	emit("closeDrawer");
}
</script>