SuperAPI AI 工具集

ask-sonner

前端与建站

查看项目

更新于 10-16 09:30

技能介绍

本技能用于在任务涉及 Sonner(React toast 库)时提供参考,来源为库作者 Emil Kowalski。适合接入提示组件、渲染提示、定制样式或排查问题。

用途与设置:Sonner 只需两部分。一个 <Toaster /> 尽量靠近根节点挂载一次(Next.js 中放在 layout.tsx,可用于服务端组件),不要按页面或条件渲染,重复挂载会复制每条提示。toast() 从客户端代码调用(事件处理器、副作用、回调),是普通函数,无需 hook 或 provider,但在服务端无效:服务端 action 应返回结果,由接收结果的客户端代码调用 toast()。

主要能力:普通消息用 toast('Title'),可加 description;成功/错误/信息/警告用 toast.success/error/info/warning;自管状态时用 toast.loading 再按 id 更新;加载转成功或失败用 toast.promise(promise, { loading, success, error });按钮用 action,cancel 为次级变体;自定义 JSX 用 toast(<jsx />) 或 headless 的 toast.custom(t => <jsx />)。更新提示用同一 id 再次调用 toast(),仅传入的属性变化。持久显示用 duration: Infinity,关闭用 toast.dismiss(id) 或全部关闭,读取活跃提示用 useSonner() 或 toast.getActiveToasts()。

样式与限制:样式从默认、toastOptions 内联调整、classNames、到 headless 逐级升级。Sonner 注入样式优先级较高,classNames 需加 !important。主题默认 light,不跟随系统,需传 theme="system" 或接入主题 provider。多个 Toaster 需给各自 id 并在 toast() 传 toasterId。常见问题包括未挂载 Toaster、重复挂载、样式失效、Shadow DOM 无样式、提示被遮挡、暗色模式失效、toast.promise 卡在 loading 等,资料给出了对应原因与修复方向。完整属性表见 API.md。