Message 全局提示 #
概述 #
Message 全局提示用于在页面顶部显示操作反馈信息,支持多种类型和自定义配置。
基础用法 #
基本使用 #
tsx
import { message, Button, Space } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
const info = () => {
messageApi.info('这是一条普通提示');
};
<Space>
{contextHolder}
<Button type="primary" onClick={info}>
显示提示
</Button>
</Space>
提示类型 #
tsx
import { message, Button, Space } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
<Space>
{contextHolder}
<Button onClick={() => messageApi.success('成功提示')}>成功</Button>
<Button onClick={() => messageApi.error('错误提示')}>错误</Button>
<Button onClick={() => messageApi.warning('警告提示')}>警告</Button>
<Button onClick={() => messageApi.info('信息提示')}>信息</Button>
<Button onClick={() => messageApi.loading('加载中...')}>加载</Button>
</Space>
加载提示 #
tsx
import { message, Button } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
const hideLoading = () => {
const hide = messageApi.loading('正在加载...', 0);
setTimeout(hide, 2500);
};
<Space>
{contextHolder}
<Button onClick={hideLoading}>显示加载</Button>
</Space>
修改延时 #
tsx
import { message, Button } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
<Button onClick={() => messageApi.success('成功提示', 5)}>
显示 5 秒
</Button>
带回调 #
tsx
import { message, Button } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
<Button onClick={() => {
messageApi.success('操作成功', 2.5, () => {
console.log('提示关闭');
});
}}>
带回调
</Button>
可关闭 #
tsx
import { message, Button } from 'antd';
const [messageApi, contextHolder] = message.useMessage();
messageApi.config({
top: 100,
duration: 2,
maxCount: 3,
});
<Button onClick={() => messageApi.success({
content: '可关闭提示',
closable: true,
})}>
可关闭
</Button>
全局方法 #
tsx
import { message } from 'antd';
message.success('成功提示');
message.error('错误提示');
message.info('信息提示');
message.warning('警告提示');
message.loading('加载提示');
全局配置 #
tsx
import { message } from 'antd';
message.config({
top: 100,
duration: 2,
maxCount: 3,
rtl: true,
prefixCls: 'my-message',
});
API #
静态方法 #
| 方法 | 说明 | 参数 |
|---|---|---|
| message.success | 成功提示 | content, duration, onClose |
| message.error | 错误提示 | content, duration, onClose |
| message.info | 信息提示 | content, duration, onClose |
| message.warning | 警告提示 | content, duration, onClose |
| message.warn | 警告提示 | content, duration, onClose |
| message.loading | 加载提示 | content, duration, onClose |
参数说明 #
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| content | 提示内容 | ReactNode | ArgsProps | - |
| duration | 持续时间(秒) | number | 3 |
| onClose | 关闭回调 | function | - |
ArgsProps #
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| className | 自定义类名 | string | - |
| content | 提示内容 | ReactNode | - |
| duration | 持续时间 | number | 3 |
| icon | 自定义图标 | ReactNode | - |
| key | 唯一标识 | string | number | - |
| onClose | 关闭回调 | function | - |
| style | 自定义样式 | CSSProperties | - |
| type | 类型 | success | info | warning | error | loading |
- |
全局配置 #
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| duration | 默认持续时间 | number | 3 |
| getContainer | 配置渲染节点 | () => HTMLElement | () => document.body |
| maxCount | 最大显示数 | number | - |
| prefixCls | 前缀类名 | string | ant-message |
| rtl | 是否 RTL | boolean | false |
| top | 距离顶部 | number | 8 |
最佳实践 #
1. 使用 hooks 方式 #
tsx
import { message } from 'antd';
const App = () => {
const [messageApi, contextHolder] = message.useMessage();
const handleClick = () => {
messageApi.success('操作成功');
};
return (
<>
{contextHolder}
<Button onClick={handleClick}>点击</Button>
</>
);
};
2. 异步操作提示 #
tsx
import { message } from 'antd';
const handleSubmit = async () => {
const hide = message.loading('提交中...', 0);
try {
await submitData();
hide();
message.success('提交成功');
} catch (error) {
hide();
message.error('提交失败');
}
};
3. 更新提示内容 #
tsx
import { message } from 'antd';
const key = 'updatable';
const showMessage = () => {
message.open({
key,
type: 'loading',
content: '加载中...',
});
setTimeout(() => {
message.open({
key,
type: 'success',
content: '加载成功',
duration: 2,
});
}, 1000);
};
下一步 #
接下来学习 Modal 对话框 组件!
最后更新:2026-03-28