You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design-vue/components/notification/demo/hook.vue

62 lines
1.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<docs>
---
order: 10
title:
zh-CN: Hooks 调用推荐
en-US: Hooks Usage (Recommend)
---
## zh-CN
通过 `notification.useNotification` 创建支持读取 context `contextHolder`请注意我们推荐通过顶层注册的方式代替 `notification` 静态方法因为静态方法无法消费上下文因而 ConfigProvider 的数据也不会生效
## en-US
Use `notification.useNotification` to get `contextHolder` with context accessible issue. Please note that, we recommend to use top level registration instead of `notification` static method, because static method cannot consume context, and ConfigProvider data will not work.
</docs>
<template>
<a-space>
<a-button type="primary" @click="() => open('topLeft')">
<RadiusUpleftOutlined />
topLeft
</a-button>
<a-button type="primary" @click="() => open('topRight')">
<RadiusUprightOutlined />
topRight
</a-button>
</a-space>
<a-divider />
<a-space>
<a-button type="primary" @click="() => open('bottomLeft')">
<RadiusBottomleftOutlined />
bottomLeft
</a-button>
<a-button type="primary" @click="() => open('bottomRight')">
<RadiusBottomrightOutlined />
bottomRight
</a-button>
</a-space>
<contextHolder />
</template>
<script lang="ts" setup>
import {
RadiusBottomleftOutlined,
RadiusBottomrightOutlined,
RadiusUpleftOutlined,
RadiusUprightOutlined,
} from '@ant-design/icons-vue';
import { NotificationPlacement, notification } from 'ant-design-vue';
const [api, contextHolder] = notification.useNotification();
const open = (placement: NotificationPlacement) => openNotification(placement);
const openNotification = (placement: NotificationPlacement) => {
api.info({
message: `Notification ${placement}`,
description:
'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
placement,
});
};
</script>