两次watch的意义何在

来源:2-6 图标选择器-巧用两次watch控制弹框的显示与隐藏

jinpu

2022-04-19

对于el-dialog组件的显示状态为什么用两次watch。直接修改不是更简洁?
const dialogVisible = ref(false)
@click="dialogVisible = ! dialogVisible"
如有向父组件传参需求 直接传不就可以了?
let emits = defineEmits([‘update:visible’])
let fnOutData = () => {
emits(‘update:visible’, dialogVisible.value)
}

写回答

2回答

赵日天l

2022-08-21

<template>
    <el-button typeof="primary" @click="open">
    <slot></slot>
</el-button>

<el-dialog v-model="visible" :title="title" width="30%" @close="close">111</el-dialog>
</template>

<script setup lang="ts">
const props = defineProps<{
    title: string,
    visible: boolean
}>()


const emits = defineEmits(['update:visible'])
const open = () => emits('update:visible', true)
const close = () => emits('update:visible', false)
</script>

这样写不香吗,还两个watch

0
1
五月的夏天
肯定不香啊,你的open和close不是做的同一个逻辑?为什么要写成两个方法。而且你不是多绑定了两个方法?
2022-08-22
共1条回复

五月的夏天

2022-04-19

最好不要直接修改父组件的数据 。

0
1
jinpu
const dialogVisible = ref(false)只在子组件生效。只对显示隐藏弹出页面起作用。
2022-04-19
共1条回复

基于Vue3+Vite+TS,二次封装element-plus业务组件

集成大量实际样例,系统掌握前沿技术栈与二次组件库封装能力

447 学习 · 185 问题

查看课程