docs/docs/en/runjs/context/message.md
Ant Design global message API; shows short messages at the top center. Messages auto-close after a while or can be closed by the user.
| Scenario | Description |
|---|---|
| JSBlock / JSField / JSItem / JSColumn | Quick feedback: validation, copy success, etc. |
| Form actions / event flow | Submit success, save failed, validation failed |
| JSAction | Click or batch action feedback |
message: MessageInstance;
MessageInstance is the Ant Design message API.
| Method | Description |
|---|---|
success(content, duration?) | Success message |
error(content, duration?) | Error message |
warning(content, duration?) | Warning message |
info(content, duration?) | Info message |
loading(content, duration?) | Loading (usually closed manually) |
open(config) | Open with custom config |
destroy() | Close all messages |
Parameters:
content: string or ConfigOptionsduration: optional seconds; default 3; 0 = no auto-closeConfigOptions (when content is an object):
interface ConfigOptions {
content: React.ReactNode;
duration?: number;
onClose?: () => void;
icon?: React.ReactNode;
}
ctx.message.success('Done');
ctx.message.error('Failed');
ctx.message.warning('Please select data first');
ctx.message.info('Processing...');
ctx.message.success(ctx.t('Copied'));
ctx.message.warning(ctx.t('Please select at least one row'));
ctx.message.success(ctx.t('Exported {{count}} records', { count: rows.length }));
const hide = ctx.message.loading(ctx.t('Saving...'));
await saveData();
hide();
ctx.message.success(ctx.t('Saved'));
ctx.message.open({
type: 'success',
content: 'Custom success',
duration: 5,
onClose: () => console.log('closed'),
});
ctx.message.destroy();
| ctx.message | ctx.notification | |
|---|---|---|
| Position | Top center | Top right |
| Use | Short, auto-dismiss | Panel with title/description; can stay longer |
| Typical | Action feedback, validation, copy | Task done, system notice, longer content |