位置: 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 前端源码泄露详解(漏洞 标准)

  • 笔记本可以换显卡吗(笔记本可以换显卡吗)(笔记本电脑集显好还是独显好)

    笔记本可以换显卡吗(笔记本可以换显卡吗)(笔记本电脑集显好还是独显好)

  • 荣耀平板怎么分屏一半一半(荣耀平板怎么分屏两个应用)

    荣耀平板怎么分屏一半一半(荣耀平板怎么分屏两个应用)

  • steam账户名称怎么设置才合格(steam账户名称怎么输入不了)

    steam账户名称怎么设置才合格(steam账户名称怎么输入不了)

  • iphone11怎么关闭应用程序(iphone11怎么关闭非原装电池通知)

    iphone11怎么关闭应用程序(iphone11怎么关闭非原装电池通知)

  • 抖音如何看在线状态(抖音如何看在线时长)

    抖音如何看在线状态(抖音如何看在线时长)

  • 微型计算机中普遍使用的字符编码是什么吗(微型计算机中普遍使用的编码是)

    微型计算机中普遍使用的字符编码是什么吗(微型计算机中普遍使用的编码是)

  • 抖音留言怎么看不到(查看抖音留言)

    抖音留言怎么看不到(查看抖音留言)

  • 微信解封多久可以正常使用(微信解封多久可以帮别人解封)

    微信解封多久可以正常使用(微信解封多久可以帮别人解封)

  • qq小海螺怎么获得(qq标识小海螺是什么意思)

    qq小海螺怎么获得(qq标识小海螺是什么意思)

  • snapdragon855是什么处理器(snapdragon855是什么处理器怎么样)

    snapdragon855是什么处理器(snapdragon855是什么处理器怎么样)

  • a57是不是全网通(a53全网通)

    a57是不是全网通(a53全网通)

  • 华为双卡通讯录分开吗(华为双卡通讯录如何区分)

    华为双卡通讯录分开吗(华为双卡通讯录如何区分)

  • 华为nova4支持快充吗(华为nova4手机支持快充吗)

    华为nova4支持快充吗(华为nova4手机支持快充吗)

  • 小米6x支不支持18w快充(小米6x支持vulkan吗)

    小米6x支不支持18w快充(小米6x支持vulkan吗)

  • 怎么快速回到桌面(快速回到桌面用什么组合键)

    怎么快速回到桌面(快速回到桌面用什么组合键)

  • 苹果手机怎么开热点(苹果手机怎么开5g数据)

    苹果手机怎么开热点(苹果手机怎么开5g数据)

  • 苹果11用的什么系统(苹果11用的什么芯片)

    苹果11用的什么系统(苹果11用的什么芯片)

  • 恩科蓝牙耳机怎么连接双耳机(恩科蓝牙耳机怎么恢复双耳模式)

    恩科蓝牙耳机怎么连接双耳机(恩科蓝牙耳机怎么恢复双耳模式)

  • 荣耀20如何设置熄屏时间(荣耀20如何设置桌面时间)

    荣耀20如何设置熄屏时间(荣耀20如何设置桌面时间)

  • 手机怎么恢复qq群(手机怎么恢复qq删除的说说)

    手机怎么恢复qq群(手机怎么恢复qq删除的说说)

  • paam00是什么手机型号(peam00是哪个型号手机)

    paam00是什么手机型号(peam00是哪个型号手机)

  • vivoy97后面有指纹吗(vivo手机有哪几款)

    vivoy97后面有指纹吗(vivo手机有哪几款)

  • 宝马x5蓝牙怎么和手机连接(宝马x5蓝牙怎么连接手机)

    宝马x5蓝牙怎么和手机连接(宝马x5蓝牙怎么连接手机)

  • wps未经授权怎么处理(office2016未经授权)

    wps未经授权怎么处理(office2016未经授权)

  • 一般纳税人转为小规模纳税人
  • 公司购买车辆的好处
  • 建筑业收到预收款预缴增值税
  • 什么叫抵扣进项
  • 个人所得税综合所得税率
  • 企业之间交换房屋 契税
  • 增值税发票什么时候认证
  • 培训机构的教材需要教育部门审批吗
  • 已经认证的发票对方可以作废吗
  • 旧房转让土地增值税计算案例
  • 小企业销售材料计入什么科目借方记什么
  • 关税的记税依据
  • 汽车的购置税可以不交吗
  • 写字楼注册公司对面积有要求吗
  • 发行债券到期一次还本付息和按月付息哪个发行价格低
  • 发票已开款项未入账有什么影响?
  • 新税法下广告费计税依据
  • 预缴税款是开票金额的多少
  • 发票勾选平台显示不成功
  • 利得一定会影响利润吗
  • 在职员工 开公司
  • 企业所得税减免税额计算公式
  • 废旧物资收购发票
  • 小规模纳税人收到专票后如何处理
  • 公司购买的原材料,原价格销售合理吗
  • 忘记用户登录密码怎么办
  • 营业外收入冲减销售费用
  • 预提电费及电费发票到账的会计分录
  • 在境外缴纳的增值税税率
  • windows7怎么操作
  • 苹果充电宝怎么验真假
  • 无产权买卖
  • 新车车祸报废
  • 增值税务发票怎么作废
  • adguard安全
  • 伦德格伦
  • PHP:iconv_strrpos()的用法_iconv函数
  • 结算劳务外包的工作内容
  • 大群的芒基蝠鲼跃出水面,墨西哥加利福尼亚湾 (© Mark Carwardine/Minden Pictures)
  • framework启动
  • 一万字综述怎么写
  • 现代信号处理张贤达
  • ubuntu系统删除
  • linux定时任务详解
  • 免税收入和免征
  • 税前扣除是什么时候
  • 亏损合同预计负债的会计分录
  • 织梦cms为什么不维护了
  • 待报解预算收入是什么意思,扣了钱
  • 企业收入确认的文章
  • 多交增值税退税抵欠怎么处理
  • 如何核算购进商品
  • 受疫情影响较大的上市公司有哪些
  • 收到税务局退回的个税手续费怎么入账
  • 为什么持有库存
  • 应收股利在资产负债表中怎么填
  • 电子承兑汇票如何入账
  • 银行汇票和银行本票区别图解
  • mysql数据库优化方案
  • sql server 不存在或者拒绝访问
  • linux安装fping
  • 无人值守工厂
  • winxp系统修复 不重装软件
  • centos ulimit
  • win7桌面快捷方式图标没箭头
  • windows 水印
  • 驱动人生公司怎么样
  • android入门教程
  • 前端node跨域处理
  • cocos2dx4.0教程
  • xcode怎么新建项目
  • Node.js中的全局对象有
  • 被调用的对象已与其客户端断开连接怎么办
  • android检测网络差
  • android ashmem
  • jQuery基于muipicker实现仿ios时间选择
  • jq 鼠标事件
  • javascript里的yield
  • 安卓xml存储方式
  • 下列关于消费税委托加工说法正确的是
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设