位置: IT常识 - 正文

vue3+element-plus Dialog对话框的使用 与 setup 写法的使用

编辑:rootadmin
vue3+element-plus Dialog对话框的使用 与 setup 写法的使用 一. 传统写法不使用setup语法糖

推荐整理分享vue3+element-plus Dialog对话框的使用 与 setup 写法的使用,希望有所帮助,仅作参考,欢迎阅读内容。

vue3+element-plus Dialog对话框的使用 与 setup 写法的使用

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

方式一:通过v-model的方式实现子组件的显示与隐藏

父组件的内容<template> <div> <el-button @click="open">打开</el-button> <Child v-model:visible="flag" ></Child> </div></template><script> import { ref, watch } from 'vue' import Child from "../components/Child.vue" export default { components: { Child }, setup() { const flag = ref(false) const open = () => { flag.value = true } watch(() => flag.value , (val) => { console.log("监听flag值得变化:", val) }) return { flag, open } } }</script>子组件内容<template> <div class="hello"> <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close"> <span>这是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">确 定</el-button> </span> </template> </el-dialog> </div></template><script> import { ref, watch } from 'vue' export default { props: { visible: { type: Boolean, default: false } }, setup(props, ctx) { const dialogVisble = ref(false) const close = () => { ctx.emit("update:visible", false); }; const confirm = () => { console.log('你点击了确定按钮') ctx.emit("update:visible", false); } watch(() => props.visible, (val) => { console.log(props.visible, val); dialogVisble.value = val }); return { dialogVisble, confirm, close } } }</script>

方式二:通过为元素绑定ref的方式实现子组件的显示与隐藏

父组件的内容<template> <div> <el-button @click="open">打开</el-button> <Child ref="visibleDialog"></Child> </div></template><script> import { ref } from 'vue' import Child from "../components/Child.vue" export default { components: { Child }, setup() { const visibleDialog = ref(null) const open = () => { visibleDialog.value.dialogVisble = true } return { visibleDialog, open } } }</script>子组件内容<template> <div class="hello"> <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close"> <span>这是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">确 定</el-button> </span> </template> </el-dialog> </div></template><script> import { ref } from 'vue' export default { setup(props, ctx) { const dialogVisble = ref(false) const confirm = () => { console.log('你点击了确定按钮') dialogVisble.value = false } const close = () => { dialogVisble.value = false } return { dialogVisble, confirm, close } } }</script>2. setup语法糖写法父组件<template> <Child :user="user" ref="visiableDialog"></Child> <el-button type="primary" @click="openDialog">打开弹窗</el-button></template><script setup>import { reactive, ref } from 'vue'import Child from "../components/childComponents.vue"const visiableDialog = ref(null)const user = reactive({ name: '张三', age: 20})function openDialog() { visiableDialog.value.dialogVisble = true console.log(visiableDialog.value.dialogVisble);}</script>子组件<template> <div class="hello">{{ `${props.user.name}在学习VUE3` }}</div> <el-dialog title="提示" v-model="dialogVisble" width="30%"> <span>这是一段信息</span> <template #footer> <span class="dialog-footer"> <el-button @click="close">取 消</el-button> <el-button type="primary" @click="confirm">确 定</el-button> </span> </template> </el-dialog></template><script setup>import { ref } from 'vue';import { ElMessageBox } from 'element-plus'// 定义控制弹窗显隐的变量const dialogVisble = ref(false)// 接受父组件传过来的值// const props = defineProps({// user: {// type: Object,// default: {}// }// })// 或者const props = defineProps(['user'])function confirm() { ElMessageBox.confirm('确定关闭吗?').then(() => { console.log('你点击了确定按钮') dialogVisble.value = false }).catch(() => { })}function close() { dialogVisble.value = false}// 将变量暴露出来defineExpose({ dialogVisble})</script>

总结:

对于传统写法两种方式来看,都有各自的优缺点,方式一在写法上虽然麻烦了些,但是符合vue的设计原则,尽量少的操作Dom,以操作数据的方式达到了预期的目的。而方式二看起来趋向于我们在vue2中的写法,虽然在写法上简便,但是在原理上则是操作了Dom,总之,两种方式都可以达到我们想要的结果,至于使用那种方式看个人编写代码的习惯吧。对于使用setup语法糖写法来看,代码整体比较整洁,写起来也相对方便快捷
本文链接地址:https://www.jiuchutong.com/zhishi/287306.html 转载请保留说明!

上一篇:vue2项目之swiper.js 的使用(vue中使用swiper6)

下一篇:[ 基础漏洞篇 ] webpack 前端源码泄露详解(漏洞 标准)

  • 京东自营怎么联系卖家(京东自营怎么联系京东客服)

    京东自营怎么联系卖家(京东自营怎么联系京东客服)

  • 微信怎么设置不被好友拉进群聊(微信怎么设置不接受视频语音聊天)

    微信怎么设置不被好友拉进群聊(微信怎么设置不接受视频语音聊天)

  • ipad os什么时候发布(ipad什么时候上新2021)

    ipad os什么时候发布(ipad什么时候上新2021)

  • 新申请的微信号附近的人搜不到我(新申请的微信号多久可以正常使用)

    新申请的微信号附近的人搜不到我(新申请的微信号多久可以正常使用)

  • smartbyte是什么软件(smartbyte有用吗)

    smartbyte是什么软件(smartbyte有用吗)

  • 十进制数56转换成二进制数是(十进制56转换为16进制)

    十进制数56转换成二进制数是(十进制56转换为16进制)

  • 内存条马甲有必要吗(电脑内存条带马甲的好还是不带马甲的好?)

    内存条马甲有必要吗(电脑内存条带马甲的好还是不带马甲的好?)

  • 一个人可以注册几个淘宝号(一个人可以注册两个支付宝账号吗)

    一个人可以注册几个淘宝号(一个人可以注册两个支付宝账号吗)

  • 手机一拨号就黑屏是怎么回事(手机一拨号就黑屏接通就亮了)

    手机一拨号就黑屏是怎么回事(手机一拨号就黑屏接通就亮了)

  • 美版和国行的区别(美版和国行的区别pencil)

    美版和国行的区别(美版和国行的区别pencil)

  • 抖音如何发图片评论(抖音如何发图片配自己的语音)

    抖音如何发图片评论(抖音如何发图片配自己的语音)

  • 一个计算机网络组成包括(真正意义上的第一个计算机网络)

    一个计算机网络组成包括(真正意义上的第一个计算机网络)

  • 三星红卡和橙卡的区别(三星红卡还是黄卡)

    三星红卡和橙卡的区别(三星红卡还是黄卡)

  • word如何关闭页眉(word如何关闭页眉页脚)

    word如何关闭页眉(word如何关闭页眉页脚)

  • 压缩包删了会有影响吗(压缩包都删了会怎样)

    压缩包删了会有影响吗(压缩包都删了会怎样)

  • vivo手机锁屏在哪设置(vivo手机锁屏在哪里打开)

    vivo手机锁屏在哪设置(vivo手机锁屏在哪里打开)

  • 快手怎么申请视频连麦(快手怎么申请视频审核员)

    快手怎么申请视频连麦(快手怎么申请视频审核员)

  • 荣耀手环5能接电话吗(荣耀手环5能接收微信吗)

    荣耀手环5能接电话吗(荣耀手环5能接收微信吗)

  • 华为m5能不能用键盘(华为m5能不能用电容笔)

    华为m5能不能用键盘(华为m5能不能用电容笔)

  • 应用管理在哪里(抖音应用管理在哪里)

    应用管理在哪里(抖音应用管理在哪里)

  • 华为mate10怎么截屏(华为mate40e怎么截屏)

    华为mate10怎么截屏(华为mate40e怎么截屏)

  • ivox21和vivoz3对比(vivoz3i和vivox21i哪个好)

    ivox21和vivoz3对比(vivoz3i和vivox21i哪个好)

  • 金蝶新建帐套的步骤(金蝶新建帐套的密码)

    金蝶新建帐套的步骤(金蝶新建帐套的密码)

  • 小红书怎么退货流程(小红书怎么退货流程图)

    小红书怎么退货流程(小红书怎么退货流程图)

  • 增值税销项税额公式
  • 待抵扣税金怎么算
  • 稳岗补贴属于不征税收入吗
  • 计入投资收益的手续费
  • 个人独资企业经营所得税税率表2023
  • 企业所得税跨年度事项
  • 开票显示错误信息是怎么回事
  • 个人垫付费用报销申请怎么写
  • 电子发票和增值税电子普通发票的区别
  • 公司预付签证费怎么入账
  • 客户想免费拿样
  • 三证合一之后还有税务登记证吗
  • 预交增值税附加税费减免吗
  • 房改房继承需要原单位开证明吗
  • 印刷专票税率是几个点
  • 收到房费的专用发票能抵扣吗?
  • 苗木免税发票可以认证增值税吗
  • 购进固定资产抵扣时咋填报增值税
  • 季度缴纳所得税如何做账
  • 制造费用在利润表体现吗
  • 企业破产应收账款要发询证函吗
  • 如何调用金三接口?
  • 有限的访问权限是什么意思
  • 四种存款账户的定义
  • mac设置定时任务
  • 苹果屏幕刷新率120hz的机型
  • touch id反应慢
  • 单位卖二手车需交税吗
  • windows11怎么显示我的电脑
  • wordpress使用
  • 固定资产改造后如何计提折旧
  • 预支员工报销费用会计科目
  • 个人所得税部分缴纳
  • 增值税纳税申报表在哪里查询
  • vue预览word加水印
  • promise的几种状态
  • php array_key_exists() 与 isset() 的区别
  • hashmap resize源码
  • 非企业指的是什么
  • 摊位出租税率
  • 收到房租不开票账务处理
  • 单位食堂厨房设计方案
  • 老板天天吸烟
  • python中myqr的用法
  • mysql常见操作
  • 当月发生的费用
  • 小型微利企业所得税优惠政策
  • 收到银行承兑汇票计入什么科目
  • 基本户和一般户的往来分录
  • 审计岗位能力要求是什么
  • 车辆置换差价账务处理
  • 银行代发的工资公司要求返还然后发一半
  • 住房公积金的账户状态是封存是什么意思
  • 固定资产机械设备有哪些
  • 事业单位之间
  • 银行汇票质押办理流程
  • 技术服务收入如何纳税
  • 资本公积和盈余公积的用途
  • 债务转实收资本的审批报告
  • 奖励罚款怎么做分录
  • mysql分区分表原理
  • 域怎么改名
  • 电脑更新windows11后开机一黑屏
  • 32位与64位操作系统怎么区分从32位和64位的概念上进行讲述
  • mac系统字体大小设置
  • windows7网络和internet设置
  • windows语音识别
  • 安装linux系统步骤图解
  • win8正版系统自带
  • w10文件预览
  • win10资源管理器启动不了
  • python 列表分片
  • JQuery实现Ajax加载图片的方法
  • android activity回调函数
  • python ftp文件上传
  • 河南的省直
  • 北京户籍网官方网站
  • 不予处理的法律依据
  • 东风小康和重庆金康
  • 国家税务总局176号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设