vue3如何在this.$message调用naiveui中的useMessage
发布于
说之前嘴欠一句:“都使用vue3了,为啥不用setup函数,用起useMesage,用起<script setup>”。有可能你是在迁移vue2的代码吧,代码重构之前让代码能够运行。
解决方案:
方案一:
增加一个组件 message-api.vue
代码如下:
<template>
<div></div>
</template>
<script>
import { defineComponent, getCurrentInstance } from 'vue';
import { useMessage } from 'naive-ui';
export default defineComponent({
setup() {
const ctx = getCurrentInstance();
if (ctx) {
const message = useMessage();
ctx.appContext.config.globalProperties.$message = message;
}
},
});
</script>
然后在根组件App.vue中使用n-messae-provider包裹message-api组件
代码如下:
<template>
<n-message-provider>
<message-api ></message-api>
</n-message-provider>
<n-notification-provider>
<notification-api></notification-api>
</n-notification-provider>
<router-view />
</template>
<script setup>
import MessageApi from './components/message-api.vue';
import NotificationApi from './components/notification-api.vue';
</script>
naiveui中notification也可以使用这个方式。
typescript类型声明如下所示:
import {
MessageApi,
NotificationApi
} from 'naive-ui'
declare module '@vue/runtime-core' {
// eslint-disable-next-line no-unused-vars
interface ComponentCustomProperties {
$message: MessageApi;
$notification: NotificationApi;
}
}
如此就可以在页面中的子组件中使用$message了,
例:
this.$message.info('naive-ui 中$message的使用方式')
方案二:
建议使用vue3到插件写法进行实现
或 匿名发表评论
找到 0 条评论