vue-modal-core
一个轻量级且灵活的 Vue 3 模态框组件库,为您的 Vue 应用提供更好的模态框管理方案。

特性
- 🎯 完全基于 TypeScript 开发,提供完整的类型支持
- 🚀 轻量级设计,无外部依赖
- 💪 支持异步关闭控制
- 🎨 灵活的自定义样式
- 📦 支持多模态框管理
- 🔧 简单易用的 API
安装
npm install vue-modal-core
yarn add vue-modal-core
pnpm add vue-modal-core
快速开始
1.创建实例
import { createModalContext } from 'vue-modal-core';
export { makeModal, ModalRenderer } = createModalContext({
allowMultiple: true
});
<!-- MyModal.vue -->
<script setup lang="ts">
import { onBeforeClose } from 'vue-modal-core';
defineProps<{
content: string;
}>()
defineModel<boolean>('visible')
// 在模态框组件中使用关闭前钩子
onBeforeClose(async () => {
await new Promise(resolve => setTimeout(resolve, 1000));// 等待 1 秒
// 返回 false 可以阻止模态框关闭
});
</script>
<template>
<div class="modal" :class="{ 'show': visible }">
<div class="modal-content">
{{ content }}
<button @click="$emit('update:visible', false)">关闭</button>
</div>
</div>
</template>
import { makeModal } from './dialog';
import MyModal from './MyModal.vue';
const modal = makeModal(MyModal);
modal.open({
content: 'Hello, World!'
});
setTimeout(() => {
modal.close();
}, 3000);
<!-- App.vue -->
<script setup lang="ts">
import { ModalRenderer } from './dialog';
</script>
<template>
<Teleport to="body">
<ModalRenderer />
</Teleport>
<!-- Page Content -->
</template>
API 文档
createModalContext
创建模态框上下文,返回模态框管理器实例。
interface ModalOptions {
allowMultiple?: boolean;
debug?: boolean;
}
const context = createModalContext(options?: ModalOptions);
makeModal
创建模态框实例。
const modal = makeModal(YourModalComponent);
interface ModalInstance {
open: (props: ComponentProps) => void;
close: () => Promise<boolean>;
isVisible: () => boolean;
}
onBeforeClose
添加模态框关闭前的钩子函数。
onBeforeClose(() => {
return true;
});
其它
- 这个项目基本是我自己一个人在使用的,所以可能会有一些问题,欢迎提交 PR 和 Issue
许可证
MIT