Back to Ant Design

Message

components/message/index.en-US.md

6.3.75.8 KB
Original Source

When To Use

  • To provide feedback such as success, warning, error etc.
  • A message is displayed at top and center and will be dismissed automatically, as a non-interrupting light-weighted prompt.

Examples

<!-- prettier-ignore -->

<code src="./demo/hooks.tsx">Hooks usage (recommended)</code> <code src="./demo/other.tsx">Other types of message</code> <code src="./demo/duration.tsx">Customize duration</code> <code src="./demo/loading.tsx">Message with loading indicator</code> <code src="./demo/thenable.tsx">Promise interface</code> <code src="./demo/custom-style.tsx">Customized style</code> <code src="./demo/style-class.tsx" version="6.0.0">Custom semantic dom styling</code> <code src="./demo/update.tsx">Update Message Content</code> <code src="./demo/info.tsx">Static method (deprecated)</code> <code src="./demo/render-panel.tsx" debug>_InternalPanelDoNotUseOrYouWillBeFired</code> <code src="./demo/component-token.tsx" debug>Component Token</code>

API

Common props ref:Common props

This component provides some static methods, with usage and arguments as following:

  • message.success(content, [duration], onClose)
  • message.error(content, [duration], onClose)
  • message.info(content, [duration], onClose)
  • message.warning(content, [duration], onClose)
  • message.loading(content, [duration], onClose)
PropertyDescriptionTypeDefault
contentThe content of the messageReactNode | config-
durationTime(seconds) before auto-dismiss, don't dismiss if set to 0number1.5
onCloseSpecify a function that will be called when the message is closedfunction-

afterClose can be called in thenable interface:

  • message[level](content, [duration]).then(afterClose)
  • message[level](content, [duration], onClose).then(afterClose)

where level refers one static methods of message. The result of then method will be a Promise.

Supports passing parameters wrapped in an object:

  • message.open(config)
  • message.success(config)
  • message.error(config)
  • message.info(config)
  • message.warning(config)
  • message.loading(config)

The properties of config are as follows:

PropertyDescriptionTypeDefault
classNameCustomized CSS classstring-
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-
contentThe content of the messageReactNode-
durationTime(seconds) before auto-dismiss, don't dismiss if set to 0number3
iconCustomized IconReactNode-
pauseOnHoverkeep the timer running or not on hoverbooleantrue
keyThe unique identifier of the Messagestring | number-
styleCustomized inline styleCSSProperties-
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-
onClickSpecify a function that will be called when the message is clickedfunction-
onCloseSpecify a function that will be called when the message is closedfunction-

Global static methods

Methods for global configuration and destruction are also provided:

  • message.config(options)
  • message.destroy()

use message.destroy(key) to remove a message.

message.config

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.

js
message.config({
  top: 100,
  duration: 2,
  maxCount: 3,
  rtl: true,
  prefixCls: 'my-message',
});
PropertyDescriptionTypeDefaultVersion
durationTime before auto-dismiss, in secondsnumber3
getContainerReturn the mount node for Message, but still display at fullScreen() => HTMLElement() => document.body
maxCountMax message show, drop oldest if exceed limitnumber-
prefixClsThe prefix className of message nodestringant-message4.5.0
rtlWhether to enable RTL modebooleanfalse
topDistance from topstring | number8

Semantic DOM

<code src="./demo/_semantic.tsx" simplify="true"></code>

Design Token

<ComponentTokenTable component="Message"></ComponentTokenTable>

FAQ

Why I can not access context, redux, ConfigProvider locale/prefixCls/theme in message? {#faq-context-redux}

antd will dynamic create React instance by ReactDOM.render when call message methods. Whose context is different with origin code located context.

When you need context info (like ConfigProvider context), you can use message.useMessage to get api instance and contextHolder node. And put it in your children:

tsx
const [api, contextHolder] = message.useMessage();

return (
  <Context1.Provider value="Ant">
    {contextHolder}
    <Context2.Provider value="Design">
    </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.

App Package Component can be used to simplify the problem of useMessage and other methods that need to manually implant contextHolder.

How to set static methods prefixCls ? {#faq-set-prefix-cls}

You can config with ConfigProvider.config