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

  • 增值税小规模纳税人免征增值税政策
  • 银行短期存款利息怎么算
  • 无形资产175加计扣除会计如何处理
  • 结转本年利润要扣除企业所得税吗
  • 一般纳税人销售农产品增值税税率
  • 制造业的加工费可以放制造费用的二级科目加工费吗
  • 房产税的纳税义务人是征税范围内房屋产权所有人
  • 民办非企业单位可以盈利吗
  • 个体工商户旅馆怎么交税
  • 固定资产计入了主营业务成本,该怎么办
  • 销售商品,提供服务以及从事其他经营活动
  • 非营利组织注册登记证件图片
  • 置换回房产怎么过户
  • 工会发放节日慰问
  • 查账征收的个体户需要申报个人所得税吗
  • 核定征收的企业需要汇算清缴吗
  • 详解非税收入
  • 金蝶账可以修改建账日期吗
  • 当期免抵税额和当期留抵税额
  • 企业所得税清算报备是什么意思
  • 特种设备培训费计入什么会计科目
  • 单独估价作为固定资产入账的土地为什么不计提折旧
  • 城市维护建设税属于什么科目
  • 季度所得税申报可以弥补以前年度亏损吗
  • 去税局代开开专用发票需要带什么证件?
  • 拍卖抵债资产的缴税责任
  • 出口退税系统中的出口货物已补税未退税证明怎么填
  • 服务费减免税会计处理
  • 票据贴现公司需要资质吗
  • 长期借款利息如何做账
  • lsalss.exe
  • 房地产企业应该如何与其他产业合作
  • 预收账款什么时候确认增值税
  • 收到专利补助费的会计处理
  • windows优化设置
  • 小企业会计准则适用于哪些企业
  • 增值税实际税负计算公式
  • 企业销售旧固定资产税率
  • h5响应式布局是什么
  • php 正则函数
  • 季度所得税表中营业收入填万元还是总金额
  • echarts地图参数设置
  • 工具人
  • html基础网页
  • react useref获取dom元素
  • php如何遍历二维数组
  • 发票内容服务费可以吗?没有明细
  • 交易性金融资产包括哪些项目
  • 公司的注册资本是什么意思
  • 纳税人兼营不同税率
  • 小微企业具体指
  • 帝国cms灵动标签下拉框
  • scala实例
  • sql语句字符串比较大小
  • 交易性金融资产的入账价值
  • mysql集群配置
  • 税控盘开具增值税专用发票步骤
  • 未分配利润转增股本
  • 固定资产计提完折旧报废的账务处理
  • win7 64位系统如何查看计算机名称为了应付某一操作
  • 快速复制一张同样的幻灯片
  • Ubuntu系统安装软件
  • win10系统怎么打开软键盘
  • iptables用法
  • linux的特殊权限
  • 在linux系统中拥有
  • 设计模式中的行为模式
  • nodejs用法
  • 批处理bat
  • 作用
  • javascript html5摇一摇功能的实现
  • bootstrap js插件
  • jquery如何做登录
  • python语言中
  • python登陆代码
  • 周炜老婆是干什么的
  • 北京税务机关代码查询
  • 非税收入发票盖什么章
  • 北京增值税普通发票图片
  • 北京大兴开发区房价
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设