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

  • 增值税滞纳金怎么做账
  • 融资租赁的两种模式
  • 漏缴的印花税如何补交
  • 预缴所得税更正怎么操作
  • 债权如何变现
  • 现金存入银行会计摘要怎么写
  • 汽车贷款利息是什么
  • 小微企业分公司 企业所得税优惠
  • 技术服务发票怎么开 安全培训
  • 转让股权应具备什么条件
  • 哪些行为违反法律但不违反道德
  • 增值税税控系统专用设备
  • 企业的财产清查无论什么情况,均应先通过
  • 外地项目的预交税款没交怎么办
  • 投资性房地产属于流动资产吗
  • 1697510217
  • 如何使用腾讯手机管家
  • 是否填写国家统计局一套表
  • 固定资产残值率计算公式
  • session php用法
  • kwservice.exe是什么
  • 未结算未取得发票怎么办
  • 营改增后房租收入怎么交税
  • 销售费用负担的差异会计分录
  • moments的用法
  • 阿里云 ide
  • php删除指定字符串
  • javaweb学生信息管理系统idea
  • php培训得花多少钱
  • rk3566 rk3288
  • vue的路由守卫有哪些钩子函数
  • 销售费用处理不包括哪些
  • 上一年度的费用退回清算表怎么填
  • python里面init
  • 企业所得税季度预缴怎么计算
  • 保险公司作为奖金怎么算
  • 全年一次性奖金税率表2023最新
  • 个体工商户要做账报税吗
  • 待抵扣进项税额和进项税额的区别
  • 建筑工程和建筑装饰工程的区别
  • 个体户如何做账?
  • 房地产企业出售商铺交什么税
  • 公司车过户给个人多久不用补税
  • 合理损耗怎么算
  • 工程预算费用怎么做会计分录
  • 设备基础属于什么基础
  • 房地产开发企业增值税税率
  • 企业建账目的
  • mysql分页效率
  • win8怎么一开机就进入桌面
  • 组建,加入或退出工会都是基于
  • freebsd操作命令
  • xp系统还原系统
  • win 8怎么样
  • 腾讯tp驱动
  • win8.1使用教程
  • windows8 应用商店
  • oem预装系统
  • linux网络聚合
  • linux整理磁盘
  • cocos-2dx
  • 置顶的朋友圈屏蔽的人能看到吗
  • java物流功能
  • python中随机数的用法
  • javascript in
  • jquery示例
  • settimeout和setinterval在安卓机无效
  • python 文件操作,读,写,指定位置
  • jquery获取当前点击的元素
  • jquery确认取消对话框
  • 如何查询车辆购置税是否缴纳
  • 广东 电子税局 app
  • 成都网上税务局
  • 2018年小微企业所得税优惠政策
  • 税务一证通进入哪个网站
  • 辽宁省银监局长
  • 海口市哪个地方最漂亮
  • 推进社会治理的路径
  • 投资损失属于所得税吗
  • 涉密人员保密教育培训可以采取
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设