通知提醒框

全局展示通知提醒信息。

何时使用

在系统四个角显示通知提醒信息。经常用于以下情况:

  • 较为复杂的通知内容。
  • 带有交互的通知,给出用户下一步的行动点。
  • 系统主动推送。

代码演示

Notification 通知提醒框 - 图1

基本

最简单的用法,4.5 秒后自动关闭。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. openNotification() {
  8. this.$notification.open({
  9. message: 'Notification Title',
  10. description:
  11. 'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
  12. onClick: () => {
  13. console.log('Notification Clicked!');
  14. },
  15. });
  16. },
  17. },
  18. };
  19. </script>

Notification 通知提醒框 - 图2

自定义图标

图标可以被自定义。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. openNotification() {
  8. this.$notification.open({
  9. message: 'Notification Title',
  10. description:
  11. 'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
  12. icon: <a-icon type="smile" style="color: #108ee9" />,
  13. });
  14. },
  15. },
  16. };
  17. </script>

Notification 通知提醒框 - 图3

自定义样式

使用 style 和 className 来定义样式。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. openNotification() {
  8. this.$notification.open({
  9. message: 'Notification Title',
  10. description:
  11. 'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
  12. style: {
  13. width: '600px',
  14. marginLeft: `${335 - 600}px`,
  15. },
  16. });
  17. },
  18. },
  19. };
  20. </script>

Notification 通知提醒框 - 图4

自动关闭的延时

自定义通知框自动关闭的延时,默认4.5s,取消自动关闭只要将该值设为 0 即可。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. openNotification() {
  8. this.$notification.open({
  9. message: 'Notification Title',
  10. description:
  11. 'I will never close automatically. I will be close automatically. I will never close automatically.',
  12. duration: 0,
  13. });
  14. },
  15. },
  16. };
  17. </script>

Notification 通知提醒框 - 图5

位置

可以设置通知从右上角、右下角、左下角、左上角弹出。

  1. <template>
  2. <div>
  3. <a-select v-model="selected" :style="{ width: '120px', marginRight: '10px' }">
  4. <a-select-option v-for="val in options" :key="val" :value="val">{{val}}</a-select-option>
  5. </a-select>
  6. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  7. </div>
  8. </template>
  9. <script>
  10. const options = ['topLeft', 'topRight', 'bottomLeft', 'bottomRight'];
  11. export default {
  12. data() {
  13. return {
  14. options,
  15. selected: 'topRight',
  16. };
  17. },
  18. watch: {
  19. selected(val) {
  20. this.$notification.config({
  21. placement: val,
  22. });
  23. },
  24. },
  25. methods: {
  26. openNotification(val) {
  27. this.$notification.open({
  28. message: 'Notification Title',
  29. description:
  30. 'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
  31. });
  32. },
  33. },
  34. };
  35. </script>

Notification 通知提醒框 - 图6

自定义按钮

自定义关闭按钮的样式和文字。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. const close = () => {
  6. console.log(
  7. 'Notification was closed. Either the close button was clicked or duration time elapsed.',
  8. );
  9. };
  10. export default {
  11. methods: {
  12. openNotification() {
  13. const key = `open${Date.now()}`;
  14. this.$notification.open({
  15. message: 'Notification Title',
  16. description:
  17. 'A function will be be called after the notification is closed (automatically after the "duration" time of manually).',
  18. btn: h => {
  19. return h(
  20. 'a-button',
  21. {
  22. props: {
  23. type: 'primary',
  24. size: 'small',
  25. },
  26. on: {
  27. click: () => this.$notification.close(key),
  28. },
  29. },
  30. 'Confirm',
  31. );
  32. },
  33. key,
  34. onClose: close,
  35. });
  36. },
  37. },
  38. };
  39. </script>

Notification 通知提醒框 - 图7

带有图标的通知提醒框

通知提醒框左侧有图标。

  1. <template>
  2. <div>
  3. <a-button @click="() => openNotificationWithIcon('success')">Success</a-button>
  4. <a-button @click="() => openNotificationWithIcon('info')">Info</a-button>
  5. <a-button @click="() => openNotificationWithIcon('warning')">Warning</a-button>
  6. <a-button @click="() => openNotificationWithIcon('error')">Error</a-button>
  7. </div>
  8. </template>
  9. <script>
  10. export default {
  11. methods: {
  12. openNotificationWithIcon(type) {
  13. this.$notification[type]({
  14. message: 'Notification Title',
  15. description:
  16. 'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
  17. });
  18. },
  19. },
  20. };
  21. </script>

Notification 通知提醒框 - 图8

更新消息内容

可以通过唯一的 key 来更新内容。

  1. <template>
  2. <a-button type="primary" @click="openNotification">Open the notification box</a-button>
  3. </template>
  4. <script>
  5. const key = 'updatable';
  6. export default {
  7. methods: {
  8. openNotification() {
  9. this.$notification.open({
  10. key,
  11. message: 'Notification Title',
  12. description: 'description.',
  13. });
  14. setTimeout(() => {
  15. this.$notification.open({
  16. key,
  17. message: 'New Title',
  18. description: 'New description.',
  19. });
  20. }, 1000);
  21. },
  22. },
  23. };
  24. </script>

何时使用

在系统四个角显示通知提醒信息。经常用于以下情况:

  • 较为复杂的通知内容。
  • 带有交互的通知,给出用户下一步的行动点。
  • 系统主动推送。

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自定义关闭按钮vueNode |function(h)-
class自定义 CSS classstring-
description通知提醒内容,必选string |vueNode |function(h)-
duration默认 4.5 秒后自动关闭,配置为 null 则不自动关闭number4.5
icon自定义图标vueNode |function(h)-
key当前通知唯一标志string-
message通知提醒标题,必选string |vueNode |function(h)-
placement弹出位置,可选 topLeft topRight bottomLeft bottomRightstringtopRight
style自定义内联样式Object | string-
onClose点击默认关闭按钮时触发的回调函数Function-
onClick点击通知时触发的回调函数Function-

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

  • notification.config(options)
  1. notification.config({
  2. placement: 'bottomRight',
  3. bottom: '50px',
  4. duration: 3,
  5. });
参数说明类型默认值
bottom消息从底部弹出时,距离底部的位置,单位像素。string24px
duration默认自动关闭延时,单位秒number4.5
getContainer配置渲染节点的输出位置() => HTMLNode() => document.body
placement弹出位置,可选 topLeft topRight bottomLeft bottomRightstringtopRight
top消息从顶部弹出时,距离顶部的位置,单位像素。string24px