Skip to content

Vue Summon随时随地召唤组件

在 Vue 3 中以命令式渲染对话框、通知与模态框 —— 不再污染模板,结果以 Promise 返回。

Vue Summon

30 秒完成第一次召唤

vue
<script setup lang="ts">
import { useSummoned } from 'vue-summon'

const { resolve } = useSummoned<boolean>()
</script>

<template>
  <div class="overlay">
    <div class="dialog">
      <p>要删除这个文件吗?</p>
      <button @click="resolve(false)">取消</button>
      <button @click="resolve(true)">删除</button>
    </div>
  </div>
</template>
ts
import { summon } from 'vue-summon'
import ConfirmDialog from './ConfirmDialog.vue'

const confirmed = await summon(ConfirmDialog)
if (confirmed) {
  await deleteFile()
}

这就是全部心智模型:像调用函数一样召唤组件,像等待 Promise 一样等待答案。 不需要 v-model:visible,不需要管理 teleport 目标,也不需要跨三层父组件传递事件。

基于 MIT 许可发布。