- 🎯 命令式调用 - 通过函数调用控制组件,而非模板声明
- 🔥 简化代码 - 减少繁杂的模板代码和状态管理
- 🎨 多UI库支持 - 已适配 Element Plus、Naive UI、Vant
- 📦 开箱即用 - 零配置,安装即用
- 🔧 完整的环境信息 - 保留完整的Vue环境上下文
- 🚀 Promise支持 - 优雅的异步流程处理
- 💪 TypeScript支持 - 完整的类型定义
<template>
<div>
<el-button @click="showDialog = true">打开弹窗</el-button>
<!-- 需要在模板中定义弹窗 -->
<el-dialog
v-model="showDialog"
title="用户信息"
@confirm="handleConfirm"
@cancel="handleCancel"
>
<UserForm :user="currentUser" @submit="handleSubmit" />
</el-dialog>
</div>
</template>
<script setup>
import { ref } from 'vue'
// 需要管理状态
const showDialog = ref(false)
const currentUser = ref(null)
// 需要多个事件处理函数
const handleConfirm = () => {
showDialog.value = false
}
const handleCancel = () => {
showDialog.value = false
}
const handleSubmit = (userData) => {
// 处理提交逻辑
showDialog.value = false
}
</script><template>
<div>
<el-button @click="openUserDialog">打开弹窗</el-button>
</div>
</template>
<script setup>
import { useDialog } from '@vue-cmd/element-plus'
const CommandDialog = useDialog()
const openUserDialog = async () => {
try {
const userData = await CommandDialog(
<UserForm user={currentUser} />,
{ title: '用户信息' }
).promise
// 直接获取结果,无需额外状态管理
console.log('用户数据:', userData)
} catch (error) {
console.log('用户取消了操作')
}
}
</script>对比结果:代码量减少极大,无需状态管理,逻辑更清晰!
# 选择你使用的UI库
npm install @vue-cmd/element-plus # Element Plus
npm install @vue-cmd/naive # Naive UI
npm install @vue-cmd/vant # Vantimport { useDialog } from '@vue-cmd/element-plus'
const CommandDialog = useDialog()
// 简单调用
CommandDialog(<div>Hello World!</div>)
// 带配置
CommandDialog(<UserForm />, {
title: '编辑用户',
width: '500px'
})const result = await CommandDialog(<UserForm />, {
title: '新增用户'
}).promise
console.log('用户提交的数据:', result)const openNestedDialogs = async () => {
const step1 = await CommandDialog(<Step1 />).promise
const step2 = await CommandDialog(<Step2 data={step1} />).promise
const step3 = await CommandDialog(<Step3 data={step2} />).promise
console.log('完成所有步骤:', step3)
}- ✅ 弹窗类组件:Dialog、Modal、Drawer
- ✅ 确认类交互:删除确认、操作确认
- ✅ 表单编辑:行内编辑、快速编辑
- ✅ 多步骤流程:向导、分步表单
- ✅ 临时性UI:提示框、通知
| UI库 | 包名 | 状态 |
|---|---|---|
| Element Plus | @vue-cmd/element-plus |
✅ 已支持 |
| Naive UI | @vue-cmd/naive |
✅ 已支持 |
| Vant | @vue-cmd/vant |
✅ 已支持 |
| Ant Design Vue | - | 🚧 计划中 |
| Quasar | - | 🚧 计划中 |
欢迎贡献代码!请查看 贡献指南。
MIT © 2024