一个简洁的消息,会临时显示。
import * as React from "react";import { Toast } from "radix-ui";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 变量用于滑动操作动画。
可以受控或不受控。
从命令行安装组件。
导入组件。
用于包裹您的 toast 和 toast 视口的提供器。它通常包裹应用程序。
Toast 显示的固定区域。用户可以通过按热键跳转到视口。您有责任确保键盘用户可以发现热键。
自动关闭的 toast。不应保持打开状态以获取用户响应。
toast 的可选标题。
Toast 消息。
可以安全忽略的操作,以确保用户不会因为时间限制而预期完成具有意外副作用的任务。
当需要获得用户响应时,将样式设置为 toast 的AlertDialog
通过 portal 放入视口中。
允许用户在 toast 持续时间结束前将其关闭的按钮。
使用 keycode.info 中每个键的 event.code
值覆盖默认热键。
自定义 toast 的持续时间以覆盖提供器值。
当每次用户点击按钮时都必须显示 toast 时,使用 state 渲染相同 toast 的多个实例(见下文)。或者,您可以抽象出各个部分以创建您自己的命令式 API。
将 --radix-toast-swipe-move-[x|y]
和 --radix-toast-swipe-end-[x|y]
CSS 变量与 data-swipe="[start|move|cancel|end]"
属性结合使用,以动画化滑动关闭操作。这是一个示例
遵循 aria-live
要求。
使用 type
属性控制 toast 对屏幕阅读器的灵敏度。
对于用户操作产生的 toast,请选择 foreground
。从后台任务生成的 Toast 应使用 background
。
Foreground toast 会立即宣布。当出现 foreground toast 时,辅助技术可能会选择清除之前排队的消息。尽量避免同时堆叠不同的 foreground toast。
Background toast 会在下一个合适的时机宣布,例如,当屏幕阅读器完成读取当前句子时。它们不会清除排队的消息,因此在响应用户交互时过度使用它们可能会被屏幕阅读器用户感知为用户体验滞后。
在 Action
上使用 altText
属性,以指示屏幕阅读器用户操作 toast 的替代方法。
您可以引导用户到应用程序中的永久位置,在那里他们可以操作它,或者实现您自己的自定义热键逻辑。如果实现后者,请使用 foreground
类型立即宣布并增加持续时间,以便给用户充足的时间。
当提供图标(或字体图标)时,请记住为屏幕阅读器用户正确标记它。
通过将原始部分抽象到您自己的组件中来创建您自己的 API。
创建您自己的命令式 API,以允许在需要时重复 toast。