vue3+ts+elementui-plus二次封装弹框实战教程
vue3+ts+elementui-plus二次封装弹框
一、弹框组件BaseDialog
<template> <div class='main'> <el-dialog v-model="visible" :title="title" :width="dialogWidth" :before-close="handleClose"> <!-- 内容插槽 --> <slot></slot> <template #footer> <span class="dialog-footer"> <el-button v-if="showCancelButton" @click="handleClose">取消</el-button> <el-button v-if="showConfirmButton" type="primary" @click="handleConfirm"> 确认 </el-button> </span> </template> </el-dialog> </div> </template> <script lang='ts' setup> import { ElMessageBox } from 'element-plus' import { ref, reactive, getCurrentInstance, onMounted, defineExpose, defineEmits } from 'vue' /** * 传入的props变量 */ const props = defineProps({ title: { type: String, default: '提示', }, dialogWidth: { type: String, default: '40%', }, showCancelButton: { type: Boolean, default: true, }, showConfirmButton: { type: Boolean, default: true, }, }) /** * 发射给父组件的方法 * 用于子组件给父组件传值或调用父组件方法 */ const emits = defineEmits(['submit', 'close']) const visible = ref(false) // 关闭弹框 const handleClose = () => { emits('close') } // 打开弹框 const handleOpen = () => { visible.value = true } // 确认事件 const handleConfirm = () => { emits('submit') } /** * 暴露给父组件的方法 * 用于父组件调用子组件方法或获取子组件属性值 */ defineExpose({ handleOpen, handleClose, visible }) onMounted(() => { }) </script> <style scoped lang='scss'> </style>
二、在index.vue中使用
<el-button @click="showDialog">点击出现弹框</el-button> <BaseDialog ref="baseDialog" @submit="handleSubmit" @close="handleClose"> <div> <el-input placeholder="Please input" /> </div> </BaseDialog>
<script lang='ts' setup> import BaseDialog from '@/components/BaseDialog/index.vue' import { ref, reactive, getCurrentInstance, onMounted } from 'vue' onMounted(() => { }) // 获取子组件的ref let baseDialog = ref() // 点击出现弹框 const showDialog = () => { // 调用子组件方法,打开弹框 baseDialog.value.handleOpen() } // 弹框确认事件 const handleSubmit = () => { console.log('我是父组件中的确认事件') } // 弹框取消事件 const handleClose = () => { baseDialog.value.visible = false } </script>
三、效果
创建vue3+ts+element-plus项目
一、创建vue3项目
1.新建vue3TsElement文件夹
该文件夹中打开命令行窗口,运行创建vue3项目的命令
npm init vue@latest
2.打开创建好的vue3_TS_element文件夹
关掉之前的命令行窗口,在该文件夹中再次打开命令行窗口下载依赖文件
npm install
3.说明
注意创建项目命令行窗口与安装依赖命令行窗口之间的切换
二、安装element-plus组件库
安装命令
npm install element-plus --save
完整引入
在main.ts引入,就可以使用了
import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' app.use(ElementPlus)
按需引入
(1)首先要安装element-plus
npm install element-plus --save
(2)然后你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件
npm install -D unplugin-vue-components unplugin-auto-import
(3)然后把下列代码插入到你的 Vite 或 Webpack 的配置文件中
import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' //按需引入element import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // https://vitejs.dev/config/ export default defineConfig({ plugins: [ AutoImport({//按需引入element resolvers: [ElementPlusResolver()], }), Components({//按需引入element resolvers: [ElementPlusResolver()], }), vue(), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } } })
到此这篇关于vue3+ts+elementui-plus二次封装弹框的文章就介绍到这了,更多相关vue3 ts elementui-plus弹框内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
详解Vue的watch中的immediate与watch是什么意思
这篇文章主要介绍了详解Vue的watch中的immediate与watch是什么意思,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12Vue+ElementUI实现表单动态渲染、可视化配置的方法
这篇文章主要介绍了Vue+ElementUI实现表单动态渲染、可视化配置的方法,需要的朋友可以参考下2018-03-03Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发)
这篇文章主要介绍了Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-10-10vue项目使用luckyexcel预览excel表格功能(心路历程)
这篇文章主要介绍了vue项目使用luckyexcel预览excel表格,我总共尝试了2种方法预览excel,均可实现,还发现一种方法可以实现,需要后端配合,叫做KKfileview,本文给大家介绍的非常详细,需要的朋友可以参考下2023-10-10
最新评论