2016-08-17 11:07:02 +08:00
---
category: Components
2022-11-09 12:28:04 +08:00
group: Feedback
2016-08-17 11:07:02 +08:00
noinstant: true
2016-09-09 13:55:46 +08:00
title: Notification
2022-11-30 20:14:41 +08:00
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*6RWNQ78WtvEAAAAAAAAAAAAADrJ8AQ/original
2023-02-09 22:17:31 +08:00
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*9hTIToR-3YYAAAAAAAAAAAAADrJ8AQ/original
2022-11-09 12:28:04 +08:00
demo:
cols: 2
2016-08-17 11:07:02 +08:00
---
2017-09-11 11:08:34 +08:00
Display a notification message globally.
2016-08-17 11:07:02 +08:00
2016-09-10 13:43:30 +08:00
## When To Use
2017-10-25 10:25:44 +08:00
2019-05-07 14:57:32 +08:00
To display a notification message at any of the four corners of the viewport. Typically it can be used in the following cases:
2016-08-17 11:07:02 +08:00
- A notification with complex content.
2019-05-07 14:57:32 +08:00
- A notification providing a feedback based on the user interaction. Or it may show some details about upcoming steps the user may have to follow.
2016-08-17 11:07:02 +08:00
- A notification that is pushed by the application.
2022-11-09 12:28:04 +08:00
## Examples
2022-11-17 17:31:26 +08:00
<!-- prettier - ignore -->
2022-11-09 12:28:04 +08:00
< code src = "./demo/hooks.tsx" > Hooks usage (recommended)< / code >
< code src = "./demo/basic.tsx" > Basic< / code >
< code src = "./demo/duration.tsx" > Duration after which the notification box is closed< / code >
< code src = "./demo/with-icon.tsx" > Notification with icon< / code >
< code src = "./demo/with-btn.tsx" > Custom close button< / code >
< code src = "./demo/custom-icon.tsx" > Customized Icon< / code >
< code src = "./demo/placement.tsx" > Placement< / code >
< code src = "./demo/custom-style.tsx" > Customized style< / code >
< code src = "./demo/update.tsx" > Update Message Content< / code >
< code src = "./demo/render-panel.tsx" debug > _InternalPanelDoNotUseOrYouWillBeFired< / code >
2016-08-17 11:07:02 +08:00
## API
- `notification.success(config)`
- `notification.error(config)`
- `notification.info(config)`
- `notification.warning(config)`
2018-07-18 14:55:47 +08:00
- `notification.open(config)`
2022-05-11 14:26:18 +08:00
- `notification.destroy(key?: String)`
2016-08-17 11:07:02 +08:00
The properties of config are as follows:
2019-11-20 17:46:50 +08:00
| Property | Description | Type | Default |
| --- | --- | --- | --- |
2020-07-02 15:33:42 +08:00
| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels) | number | 24 |
2019-11-20 17:46:50 +08:00
| btn | Customized close button | ReactNode | - |
| className | Customized CSS class | string | - |
2020-10-21 10:33:43 +08:00
| closeIcon | Custom close icon | ReactNode | - |
2020-10-09 10:08:52 +08:00
| description | The content of notification box (required) | ReactNode | - |
2019-11-20 17:46:50 +08:00
| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 |
| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body |
| icon | Customized icon | ReactNode | - |
| key | The unique identifier of the Notification | string | - |
2020-10-09 10:08:52 +08:00
| message | The title of notification box (required) | ReactNode | - |
2019-11-20 17:46:50 +08:00
| placement | Position of Notification, can be one of `topLeft` `topRight` `bottomLeft` `bottomRight` | string | `topRight` |
2020-07-02 15:33:42 +08:00
| style | Customized inline style | [CSSProperties ](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e434515761b36830c3e58a970abf5186f005adac/types/react/index.d.ts#L794 ) | - |
| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels) | number | 24 |
2020-10-21 10:33:43 +08:00
| onClick | Specify a function that will be called when the notification is clicked | function | - |
| onClose | Trigger when notification closed | function | - |
2022-10-06 19:16:57 +08:00
| props | Props passed down | Object | An object that can contain `data-*` , `aria-*` , or `role` props, to be put on the notification `div` . This currently only allows `data-testid` instead of `data-*` in TypeScript. See https://github.com/microsoft/TypeScript/issues/28960. |
2016-08-17 11:07:02 +08:00
2017-09-11 11:08:34 +08:00
`notification` also provides a global `config()` method that can be used for specifying the default options. Once this method is used, all the notification boxes will take into account these globally defined options when displaying.
2016-08-17 11:07:02 +08:00
2023-02-15 15:05:21 +08:00
### Global configuration
2017-10-25 10:25:44 +08:00
2023-02-15 15:05:21 +08:00
`notification.config(options)`
> When you use `ConfigProvider` for global configuration, the system will automatically start RTL mode by default.(4.3.0+)
>
> When you want to use it alone, you can start the RTL mode through the following settings.
#### notification.config
2020-04-30 10:52:44 +08:00
2016-08-17 11:07:02 +08:00
```js
notification.config({
2017-01-27 17:12:25 +08:00
placement: 'bottomRight',
bottom: 50,
2016-08-17 11:07:02 +08:00
duration: 3,
2020-04-13 15:45:49 +08:00
rtl: true,
2016-08-17 11:07:02 +08:00
});
```
2021-11-12 11:46:42 +08:00
| Property | Description | Type | Default | Version |
2021-08-17 10:45:33 +08:00
| --- | --- | --- | --- | --- |
2021-11-12 11:46:42 +08:00
| bottom | Distance from the bottom of the viewport, when `placement` is `bottomRight` or `bottomLeft` (unit: pixels) | number | 24 | |
| closeIcon | Custom close icon | ReactNode | - | |
| duration | Time in seconds before Notification is closed. When set to 0 or null, it will never be closed automatically | number | 4.5 | |
| getContainer | Return the mount node for Notification | () => HTMLNode | () => document.body | |
| placement | Position of Notification, can be one of `topLeft` `topRight` `bottomLeft` `bottomRight` | string | `topRight` | |
| rtl | Whether to enable RTL mode | boolean | false | |
| top | Distance from the top of the viewport, when `placement` is `topRight` or `topLeft` (unit: pixels) | number | 24 | |
| maxCount | Max Notification show, drop oldest if exceed limit | number | - | 4.17.0 |
2020-02-07 17:55:27 +08:00
## FAQ
2022-11-29 10:39:57 +08:00
### Why I can not access context, redux, ConfigProvider `locale/prefixCls/theme` in notification?
2020-02-07 17:55:27 +08:00
2020-02-07 20:32:00 +08:00
antd will dynamic create React instance by `ReactDOM.render` when call notification methods. Whose context is different with origin code located context.
2020-02-07 17:55:27 +08:00
When you need context info (like ConfigProvider context), you can use `notification.useNotification` to get `api` instance and `contextHolder` node. And put it in your children:
```tsx
const [api, contextHolder] = notification.useNotification();
return (
< Context1.Provider value = "Ant" >
2020-03-30 16:17:12 +08:00
{/* contextHolder is inside Context1 which means api will get value of Context1 */}
2020-02-07 17:55:27 +08:00
{contextHolder}
< Context2.Provider value = "Design" >
2020-03-30 16:17:12 +08:00
{/* contextHolder is outside Context2 which means api will **not** get value of Context2 */}
2020-02-07 17:55:27 +08:00
< / Context2.Provider >
< / Context1.Provider >
);
```
**Note:** You must insert `contextHolder` into your children with hooks. You can use origin method if you do not need context connection.
2021-02-09 21:49:15 +08:00
2022-12-26 11:55:18 +08:00
> [App Package Component](/components/app) can be used to simplify the problem of `useNotification` and other methods that need to manually implant contextHolder.
2022-12-26 10:08:15 +08:00
2021-02-09 21:49:15 +08:00
### How to set static methods prefixCls ?
2022-12-22 14:12:26 +08:00
You can config with [`ConfigProvider.config` ](/components/config-provider#configproviderconfig-4130 )