---
title: Notification 通知提醒框
order: 13
group:
  path: /components
nav:
  title: 组件
  path: /components
---

## 使用

### 使用原则

- 在系统四个角显示通知提醒信息。经常用于：
  - 较为复杂的通知内容；
  - 带有交互的通知，给出下一步的行动点；
  - 系统主动推送。
- 可设置 4.5s 后自动消失。也可以设置为 0.

### 基本使用

提供了四种基本通知提醒框：`success`、`error`、`info`、`warning`。默认带 icon

```jsx
import React from 'react';
import { Button, notification } from 'quanta-design';

const success = () => {
  notification.success({
    message: '这是一条成功提示的标题',
    description: '这是一条成功提示描述这是一条成功提示描述',
  });
};

const error = () => {
  notification.error({
    message: '这是一条失败提示的标题',
    description: '这是一条失败提示描述这是一条失败提示描述',
  });
};

const warning = () => {
  notification.warning({
    message: '这是一条警告提示的标题',
    description: '这是一条警告提示描述这是一条警告提示描述',
  });
};

const info = () => {
  notification.info({
    message: '这是一条消息提示的标题',
    description: '这是一条消息提示描述这是一条消息提示描述',
  });
};

export default () => (
  <div style={{ display: 'flex' }}>
    <div style={{ flex: '1' }}>
      <Button onClick={success}>Success</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={error}>Error</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={info}>Info</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={warning}>Warning</Button>
    </div>
  </div>
);
```

### 不带图标

```jsx
import React from 'react';
import { Button, notification } from 'quanta-design';

const open = () => {
  notification.open({
    message: '这是一条成功提示的标题',
    description: '这是一条成功提示的描述这是一条成功提示的描述',
  });
};

export default () => (
  <div style={{ display: 'flex' }}>
    <div style={{ flex: '1' }}>
      <Button onClick={open}>普通提醒</Button>
    </div>
  </div>
);
```

### 手动更新和关闭

```jsx
import React from 'react';
import { Button, notification } from 'quanta-design';

const update = () => {
  notification.success({
    key: 'myUpdate',
    message: '这是一条成功提示的标题',
    description: '3s后自动更新内容',
    duration: null,
  });
  setTimeout(() => {
    notification.success({
      key: 'myUpdate',
      message: '我更新了标题',
      description: '这是我的更新原因这是我的更新原因',
    });
  }, 3000);
};

const close = () => {
  notification.warning({
    key: 'myClose',
    message: '这是一条警告提示的标题',
    description: '3s后会自动关闭提醒框',
    duration: null,
  });
  setTimeout(() => {
    notification.close('myClose');
  }, 3000);
};

export default () => (
  <div style={{ display: 'flex' }}>
    <div style={{ flex: '1' }}>
      <Button onClick={update}>手动更新</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={close}>手动关闭</Button>
    </div>
  </div>
);
```

### 设置提醒框的弹出位置

```jsx
import React from 'react';
import { Button, notification } from 'quanta-design';

const open = placement => () => {
  notification.info({
    placement,
    message: '这是一条消息提示的标题',
    description: '这是一条消息提示描述这是一条消息提示描述',
  });
};

export default () => (
  <div style={{ display: 'flex' }}>
    <div style={{ flex: '1' }}>
      <Button onClick={open('topLeft')}>topLeft</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={open('topRight')}>topRight</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={open('bottomLeft')}>bottomLeft</Button>
    </div>
    <div style={{ flex: '1' }}>
      <Button onClick={open('bottomRight')}>bottomRight</Button>
    </div>
  </div>
);
```

## API

- `notification.success(config)`
- `notification.error(config)`
- `notification.info(config)`
- `notification.warning(config)`
- `notification.warn(config)`
- `notification.open(config)`
- `notification.close(key: String)`
- `notification.destroy()`

config 参数如下：

| 参数         | 说明                                                           | 类型                                                                                                                                                | 默认值              |
| ------------ | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
| btn          | 自定义关闭按钮                                                 | ReactNode                                                                                                                                           | -                   |
| bottom       | 消息从底部弹出时，距离底部的位置，单位像素。                   | number                                                                                                                                              | 24                  |
| className    | 自定义 CSS class                                               | string                                                                                                                                              | -                   |
| closeIcon    | 自定义关闭图标                                                 | ReactNode                                                                                                                                           | -                   |
| description  | 通知提醒内容，必选                                             | string\|ReactNode                                                                                                                                   | -                   |
| duration     | 默认 4.5 秒后自动关闭，配置为 null 则不自动关闭                | number                                                                                                                                              | 4.5                 |
| getContainer | 配置渲染节点的输出位置                                         | () => HTMLNode                                                                                                                                      | () => document.body |
| icon         | 自定义图标                                                     | ReactNode                                                                                                                                           | -                   |
| key          | 当前通知唯一标志                                               | string                                                                                                                                              | -                   |
| message      | 通知提醒标题，必选                                             | string\|ReactNode                                                                                                                                   | -                   |
| onClose      | 点击默认关闭按钮时触发的回调函数                               | Function                                                                                                                                            | -                   |
| onClick      | 点击通知时触发的回调函数                                       | Function                                                                                                                                            | -                   |
| placement    | 弹出位置，可选 `topLeft` `topRight` `bottomLeft` `bottomRight` | string                                                                                                                                              | topRight            |
| style        | 自定义内联样式                                                 | [React.CSSProperties](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/e434515761b36830c3e58a970abf5186f005adac/types/react/index.d.ts#L794) | -                   |
| top          | 消息从顶部弹出时，距离顶部的位置，单位像素。                   | number                                                                                                                                              | 24                  |

还提供了一个全局配置方法，在调用前提前配置，全局一次生效。

- `notification.config(options)`

```js
notification.config({
  placement: 'bottomRight',
  bottom: 50,
  duration: 3,
});
```

| 参数         | 说明                                                           | 类型           | 默认值              |
| ------------ | -------------------------------------------------------------- | -------------- | ------------------- |
| bottom       | 消息从底部弹出时，距离底部的位置，单位像素。                   | number         | 24                  |
| closeIcon    | 自定义关闭图标                                                 | ReactNode      | -                   |
| duration     | 默认自动关闭延时，单位秒                                       | number         | 4.5                 |
| getContainer | 配置渲染节点的输出位置                                         | () => HTMLNode | () => document.body |
| placement    | 弹出位置，可选 `topLeft` `topRight` `bottomLeft` `bottomRight` | string         | topRight            |
| top          | 消息从顶部弹出时，距离顶部的位置，单位像素。                   | number         | 24                  |
