3步实现NaiveUI消息组件dialog、message、notification、loadingBar全局挂载配置

项目各版本:

1:根据Naive官方文档,创建自定义组建:

链接:Naive UIhttps://www.naiveui.com/zh-CN/os-theme/components/discrete

 

创建一个自定义组件:message.vue,并将各个组件挂载在window上。

<template>
    <div></div>
</template>
  
<script lang="ts">
import { createDiscreteApi } from 'naive-ui'
import { defineComponent } from "vue";

const { message, notification, dialog, loadingBar } = createDiscreteApi(
    ['message', 'dialog', 'notification', 'loadingBar']
)

window.$message = message;
window.$notification = notification;
window.$dialog = dialog;
window.$loadingBar = loadingBar;

export default defineComponent({});
</script>

2:typescript中使用window.$messge 会报错,简单一步搞定:

创建一个***.d.ts的文件,我的自定义文件名是naive-massge.d.ts。

这部分是借鉴(照抄 😄)了如下博主的文章:

NaiveUI对话框dialog和信息message全局挂载配置_苦呀君的博客-CSDN博客

import type { DialogApiInjection } from "naive-ui/lib/dialog/src/DialogProvider";
import type { MessageApiInjection } from "naive-ui/lib/message/src/MessageProvider";
import type { NotificationApiInjection } from "naive-ui/lib/notification/src/NotificationProvider";
import type { LoadingBarInst } from "naive-ui/lib/loading-bar/src/LoadingBarProvider";

declare global {
    interface Window {
        $message: MessageApiInjection;
        $dialog: DialogApiInjection;
        $notification: NotificationApiInjection;
        $loadingBar: LoadingBarInst;
    }
}

3: 在App.vue中引入组件:

 

4:  使用:

 

以前也是一名程序员,并且,深爱着职业。被迫全职宝妈4年多,最近在慢慢学习Vue3和TypeScript等前端框架。4年多没有碰电脑,自己摸索起来也是晕头转向。

第一次写文章,肯定有很多不足,欢迎大家的意见。也希望能帮到像我一样被Naive的message困住的人。

 

 

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要封装一个全局的函数式组件,你可以遵循以下骤: 1. 在 `src` 目录下创建一个新的文件夹,例如 `components`,并在该文件夹中创建一个名为 `ElDialog.vue` 的文件。 2. 在 `ElDialog.vue` 文件中编写组件的代码,如下所示: ```html <template> <div v-if="visible" class="el-dialog"> <h2 class="el-dialog-title">{{ title }}</h2> <p class="el-dialog-content">{{ content }}</p> <!-- 其他内容... --> </div> </template> <script> import { defineComponent, reactive } from 'vue'; export default defineComponent({ name: 'ElDialog', props: { title: String, content: String, // 其他 props... }, setup(props) { const visible = reactive({ value: false }); return { visible, }; }, }); </script> <style scoped> .el-dialog { /* 样式定义 */ } .el-dialog-title { /* 样式定义 */ } .el-dialog-content { /* 样式定义 */ } </style> ``` 在上述代码中,我们使用了 `reactive` 函数来创建响应式数据 `visible`,用于控制组件的显示与隐藏。通过在父组件中修改 `visible.value` 的值,可以控制 `el-dialog` 的显示状态。 3. 在 `src` 目录下创建一个名为 `main.js` 的文件,并在其中注册全局的函数式组件: ```javascript import { createApp } from 'vue'; import ElDialog from './components/ElDialog.vue'; const app = createApp(); app.component('el-dialog', ElDialog); app.mount('#app'); ``` 在上述代码中,我们使用 `app.component` 方法来注册 `el-dialog` 组件全局组件。这样,在你的应用程序的任何地方,你都可以使用 `<el-dialog>` 标签来引用该组件。 4. 在你的应用程序的主入口文件中,例如 `App.vue`,使用 `<el-dialog>` 标签来调用该组件: ```html <template> <div id="app"> <!-- 其他内容... --> <el-dialog title="对话框标题" content="对话框内容"></el-dialog> </div> </template> <script> export default { // 组件的逻辑... }; </script> <style> /* 样式定义... */ </style> ``` 现在,你就可以在整个应用程序中使用 `<el-dialog>` 标签,并传递所需的属性来显示全局的函数式组件了。 请注意,以上示例只是一个简单的演示,你可以根据实际需求进行更复杂的组件逻辑和样式定义。同时,也可以根据项目的具体情况,在全局注册组件时使用其他的标签名。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值