使用 Snackbars 向用户传达低优先级、非中断性的消息。

设计指南

Snackbar 显示一条简洁的消息,并在短暂延迟后清除。它还可以为用户提供选项,例如查看已发布的帖子,但这些选项也应可在 UI 的其他地方获得。

开发指南

用法

要显示一个简单的 snackbar,将消息作为 children prop 传递:

const MySnackbarNotice = () => (
    <Snackbar>Post published successfully.</Snackbar>
);

对于更复杂的标记,您可以传递任何 JSX 元素:

const MySnackbarNotice = () => (
    <Snackbar>
        <p>
            An error occurred: <code>{ errorDetails }</code>.
        </p>
    </Snackbar>
);

Props

以下 props 用于控制组件的显示。

actions: NoticeAction[]

操作对象数组。每个成员对象应包含一个 label 以及 url 链接字符串或 onClick 回调函数。

  • 必需:否
  • 默认值:[]

children: string

通知显示的文本。除非提供 spokenMessage 作为替代消息,否则也用作辅助技术的语音消息。

  • 必需:是

explicitDismiss: boolean

是否需要用户操作来关闭 snackbar。默认情况下,它会在超时后自动关闭,无需用户交互。

  • 必需:否
  • 默认值:false

icon: ReactNode

在 snackbar 中渲染的图标。

  • 必需:否
  • 默认值:null

listRef: RefObject< HTMLDivElement | null >

包含 snackbar 的列表的引用。

  • 必需:否

onDismiss: () => void

当 snackbar 被关闭时执行的回调。它与 onRemove 不同,后者看起来像是一个回调,但实际上是用来从 UI 中移除 snackbar 的函数。

  • 必需:否

onRemove: () => void

关闭通知时调用的函数。

  • 必需:否

politeness: ‘polite’ | ‘assertive’

通知语音消息的礼貌级别。应作为 aria-live 属性值的有效选项之一提供。请注意,此值应被视为建议;辅助技术可能会根据内部启发式方法覆盖它。

'assertive' 值应用于重要且通常具有时间敏感性的信息。它将中断屏幕阅读器当前正在播报的任何内容。

'polite' 值应用于提示性信息。它不应中断屏幕阅读器当前正在播报的内容(“语音队列”)或中断当前任务。

  • 必需:否
  • 默认值:'polite'

spokenMessage: string

用于提供自定义语音消息。

  • 必需:否
  • 默认值:children

相关组件

  • 若要创建需要更高级别注意力的突出消息,请使用 Notice。