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

  • 如何不花钱做网站推广,公司网站推广六个方法(网上怎么挣钱不需要本钱)

    如何不花钱做网站推广,公司网站推广六个方法(网上怎么挣钱不需要本钱)

  • 苹果13pro勿扰模式在哪(苹果13pro勿扰模式在哪设置)

    苹果13pro勿扰模式在哪(苹果13pro勿扰模式在哪设置)

  • 小米的息屏显示在哪里(小米开启息屏显示)

    小米的息屏显示在哪里(小米开启息屏显示)

  • 微信怎么看顾客消费次数(微信怎么看顾客管理)

    微信怎么看顾客消费次数(微信怎么看顾客管理)

  • 加入淘宝联盟的条件(加入淘宝联盟有什么好处)

    加入淘宝联盟的条件(加入淘宝联盟有什么好处)

  • ipad已停用连接itunes可以用手机恢复吗(ipad已停用连接itunes怎么快速解决)

    ipad已停用连接itunes可以用手机恢复吗(ipad已停用连接itunes怎么快速解决)

  • 注销的抖音号能恢复吗(抖音号认证)

    注销的抖音号能恢复吗(抖音号认证)

  • 为什么苹果原装充电器充不了,普通的可以(为什么苹果原装充电线充不上电)

    为什么苹果原装充电器充不了,普通的可以(为什么苹果原装充电线充不上电)

  • ishangtong是拼多多吗

    ishangtong是拼多多吗

  • 苹果X可以改苹果11的后壳吗(苹果x可以改苹果12吗)

    苹果X可以改苹果11的后壳吗(苹果x可以改苹果12吗)

  • 数字签名和电子签名的区别(数字签名和电子签字)

    数字签名和电子签名的区别(数字签名和电子签字)

  • 卡贴机没信号怎么解决(卡贴机没信号怎么办)

    卡贴机没信号怎么解决(卡贴机没信号怎么办)

  • 荣耀系列手机上市顺序(荣耀手机样子)

    荣耀系列手机上市顺序(荣耀手机样子)

  • 华为mate20指纹在哪(mate20手机指纹)

    华为mate20指纹在哪(mate20手机指纹)

  • 连尚头条软件怎么删除(连尚头条安装下载)

    连尚头条软件怎么删除(连尚头条安装下载)

  • 华为手机盲人功能关闭(华为手机 盲人)

    华为手机盲人功能关闭(华为手机 盲人)

  • 华为p30分屏设置(华为p30分屏怎样打开)

    华为p30分屏设置(华为p30分屏怎样打开)

  • iphone11亮度自动调节(iphone 11自动亮度)

    iphone11亮度自动调节(iphone 11自动亮度)

  • 三星s6edge如何通话转移(三星s6edge怎么连接电脑)

    三星s6edge如何通话转移(三星s6edge怎么连接电脑)

  • iphonexsmax是什么处理器(iphonexsmax是什么时候停产的)

    iphonexsmax是什么处理器(iphonexsmax是什么时候停产的)

  • 手机焦距一般多大(手机焦距范围)

    手机焦距一般多大(手机焦距范围)

  • 照片显示时间(照片显示时间怎么设置)

    照片显示时间(照片显示时间怎么设置)

  • 视频保存不到相册怎么回事(视频保存不到相册里,这是怎么回事呢怎么保存不到呢)

    视频保存不到相册怎么回事(视频保存不到相册里,这是怎么回事呢怎么保存不到呢)

  • iphone xr有nfc吗(苹果xr是否有nfc)

    iphone xr有nfc吗(苹果xr是否有nfc)

  • 苹果手机的屏保时间怎么设置(苹果手机的屏保怎么删除)

    苹果手机的屏保时间怎么设置(苹果手机的屏保怎么删除)

  • 3d外景怎么做(3d外景材质怎么调)

    3d外景怎么做(3d外景材质怎么调)

  • Github ChatGPT-Web:了解最新AI技术的前沿应用!

    Github ChatGPT-Web:了解最新AI技术的前沿应用!

  • 公司有买社保就要交税吗
  • 山东省增值税发票查验平台
  • 办税员可以购票吗?
  • 如何办理车辆购置置换补贴手续
  • 个人经营所得税起征点是多少
  • 现金流量表和其他表的勾稽关系
  • 土地增值税计入税金及附加吗
  • 货物已到发票未开具
  • 小规模纳税季收入怎么算
  • 企业净利率多少算正常
  • 如果零申报
  • 税盘清卡截止每个月
  • 合伙开有限公司注销流程
  • 收到捐赠设备
  • 以旧换新销售货物的增值税处理
  • 供货方提供安装材料
  • 电子承兑汇票如何拆小
  • 收到实物返利
  • 环保公司开具发票怎么开
  • 买材料的仓储费会计分录
  • 流动资产投资的特点有
  • 个人开具建筑服务发票
  • 增值税发票抵扣联丢失怎么办
  • 7月1日起税务新规
  • 什么时候计入其他综合收益什么时候计入投资收益
  • 报税报错了怎么办?
  • 破产清算重整和解
  • 代理运费进项税额抵扣
  • 未提完折旧的固定资产重新评估后是否还计提折旧
  • 融资租赁和融资性售后回租的区别
  • 五月份开的发票但是七月冲红了七月增值税怎么报
  • 1697509200
  • 供热公司向用户提供
  • 外籍人员工资个税
  • 我公司以房产土地为主
  • 商标公司转让给个人提供什么?
  • 投资公司的股东
  • mac怎么把通知栏固定
  • php 7 8
  • qqbak文件怎么打开
  • s3tray2.exe - s3tray2是什么进程 有什么用
  • php str函数
  • 退货发票会作废吗
  • 建造合同完工百分比法
  • 运输发票税金怎么算
  • 应税行为包括销售货物吗
  • 民营企业的工业项目建设-经营-转让是什么模式
  • 报税扣款锁定怎么处理
  • 纯HTML+CSS小兔鲜儿网站首页(静态网页)
  • vue的mvvm模型
  • PyTorch 深度学习实战 | DIEN 模拟兴趣演化的序列网络
  • 财政拨款结转累计结转为负
  • 营改增后工程分包财务
  • 企业哪些情况下需要报税
  • 企业所得税的扣除是什么意思
  • sql2000数据库怎么删除数据
  • 经营性罚款在会计中怎么处理
  • 公司收到待报解预算收入在哪里查具体情况
  • 快递公司成本分析
  • 当月发生逾期押金收入12870元
  • 出口退税进口退税吗
  • 代开专票作废了扣了两次税怎么办?
  • 承兑汇票怎么贴
  • 直接人工标准工时计算公式
  • 工资表里有什么
  • 汽车加油费属于交通费用吗
  • 收到联营单位投入的设备一台
  • 生产的半成品怎么做分录
  • MSSQL SERVER 2005 数学函数整理
  • mysql数据库的基本原理
  • IIS7在Windows Server 2008R2的新改进
  • 监控iphone软件
  • PureVoice.exe - PureVoice是什么进程 有什么用
  • popupwindow底部弹出
  • cocos2dx游戏开发框架
  • 超人飞车助手下载安装
  • oculus dk2
  • python import os
  • activity与fragment的通信
  • 开票风险预警机制蓝色预警怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设