一个简短的消息,会暂时显示。
import * as React from 'react';import * as Toast from '@radix-ui/react-toast';import './styles.css';const ToastDemo = () => {const [open, setOpen] = React.useState(false);const eventDateRef = React.useRef(new Date());const timerRef = React.useRef(0);React.useEffect(() => {return () => clearTimeout(timerRef.current);}, []);return (<Toast.Provider swipeDirection="right"><button className="Button large violet" onClick={() => { setOpen(false); window.clearTimeout(timerRef.current); timerRef.current = window.setTimeout(() => { eventDateRef.current = oneWeekAway(); setOpen(true); }, 100); }} >Add to calendar</button><Toast.Root className="ToastRoot" open={open} onOpenChange={setOpen}><Toast.Title className="ToastTitle">Scheduled: Catch up</Toast.Title><Toast.Description asChild><time className="ToastDescription" dateTime={eventDateRef.current.toISOString()}>{prettyDate(eventDateRef.current)}</time></Toast.Description><Toast.Action className="ToastAction" asChild altText="Goto schedule to undo"><button className="Button small green">Undo</button></Toast.Action></Toast.Root><Toast.Viewport className="ToastViewport" /></Toast.Provider>);};function oneWeekAway(date) {const now = new Date();const inOneWeek = now.setDate(now.getDate() + 7);return new Date(inOneWeek);}function prettyDate(date) {return new Intl.DateTimeFormat('en-US', { dateStyle: 'full', timeStyle: 'short' }).format(date);}export default ToastDemo;
自动关闭。
在悬停、聚焦和窗口模糊时暂停关闭。
支持热键跳转到 toast 视窗。
支持通过滑动手势关闭。
公开用于滑动手势动画的 CSS 变量。
可以是受控的或不受控的。
从命令行安装组件。
导入组件。
包裹你的 toasts 和 toast 视窗的提供者。 它通常包裹应用程序。
toasts 出现的位置。 用户可以通过按热键跳转到视窗。 由你负责确保键盘用户的热键可发现性。
自动关闭的 toast。 它不应该被保留打开以获取用户响应。
可选的 toast 标题。
toast 消息。
为了确保用户不会因为时间限制而产生的意外副作用来完成任务,可以忽略此操作。
当需要获取用户响应时,请在视窗中弹出AlertDialog
,并将其样式设置为吐司。
一个按钮,允许用户在吐司的持续时间结束之前将其关闭。
使用event.code
值覆盖默认热键,该值来自keycode.info中的每个键。
自定义吐司的持续时间以覆盖提供者值。
当吐司必须在用户每次点击按钮时出现时,请使用状态渲染多个相同吐司的实例(见下文)。或者,您可以抽象出各个部分以创建您自己的命令式 API。
将--radix-toast-swipe-move-[x|y]
和--radix-toast-swipe-end-[x|y]
CSS 变量与data-swipe="[start|move|cancel|end]"
属性结合起来,以动画化滑动关闭手势。以下是一个示例
符合aria-live
要求。
使用type
道具控制吐司对屏幕阅读器的敏感度。
对于由用户操作产生的吐司,请选择foreground
。从后台任务生成的吐司应使用background
。
前台吐司会立即宣布。辅助技术可能会选择在出现前台吐司时清除以前排队的消息。尽量避免同时堆叠不同的前台吐司。
背景吐司会在下一个合适的时机宣布,例如,当屏幕阅读器完成当前句子的朗读时。它们不会清除排队的消息,因此在响应用户交互时过度使用它们会导致屏幕阅读器用户体验到滞后的体验。
使用Action
上的altText
道具为屏幕阅读器用户指示执行吐司的备用操作方法。
您可以将用户引导到应用程序中可以执行操作的永久位置,或者实现您自己的自定义热键逻辑。如果实现后者,请使用foreground
类型以立即宣布并延长持续时间,以便用户有充足的时间。
当提供图标(或字体图标)时,请记住为屏幕阅读器用户正确地标记它。
通过将基本部分抽象到您自己的组件中来创建您自己的 API。
创建您自己的命令式 API,以允许吐司重复(如果需要)。