一个临时显示的简洁消息。
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;
自动关闭。
在鼠标悬停、聚焦和窗口失焦时暂停关闭。
支持热键跳转到提示视口。
支持通过滑动手势关闭。
暴露滑动手势动画的 CSS 变量。
可以是受控或不受控的。
从命令行安装组件。
导入组件。
包裹你的提示和提示视口的提供者。通常包裹整个应用程序。
提示出现的固定区域。用户可以通过按下热键跳转到视口。确保热键对于键盘用户的可发现性是你的责任。
自动关闭的提示。应避免被保持开启以获取用户响应。
提示的可选标题。
提示消息。
一个安全可以忽略的操作,以确保用户不需要在时间限制的情况下完成任务。
当获取用户响应是必要的时,应该将一个 AlertDialog
风格化为提示并插入到视口中。
一个允许用户在其持续时间未结束之前关闭提示的按钮。
使用热键重写默认热键,使用来自 keycode.info 的每个键的 event.code
值。
自定义提示的持续时间以覆盖提供者的值。
当每次用户点击按钮时提示必须出现时,使用状态渲染多个相同提示的实例(见下文)。或者,你可以抽象部分以创建自己的命令式 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,以允许提示复制(如果需要)。