当前位置: 首页 > news >正文

YggJS RToast(科技风全局消息通知库) 使用教程 v0.1.0(详细教学)

本教程将带你从零开始使用 YggJS RToast(科技风全局消息通知库)。内容涵盖安装、主题、示例、API 解释与最佳实践,帮助你快速上手并在真实项目中稳定落地。


项目介绍

  • YggJS RToast 是一个面向 React 应用的消息通知库,聚焦“全局用法”,开箱即用、类型完备、主题科技风。
  • 核心理念:简单一致的 API、良好的默认体验、可渐进式定制。
  • 适用场景:表单提交反馈、网络异常提示、操作成功/失败提醒、调试信息等。

安装

  • 使用包管理器安装(发布包场景):

    • pnpm add yggjs_rtoast
    • npm i yggjs_rtoast
    • yarn add yggjs_rtoast
  • React 版本

    • 推荐 React 18+(内部默认使用 createRoot)。如需支持更低版本,请在仓库 issue 反馈或自定义适配。
  • 样式引入

    • 默认情况下,tech 入口会注入样式。如果你的构建环境未自动纳入,可手动导入:
      • import ‘yggjs_rtoast/dist/style.css’
  • Workspace 本地开发(本仓库示例)

    • 示例工程通过 Vite alias 与 TS paths 将 yggjs_rtoast 指向本仓库 src,开发时无需先构建 dist。
    • 一般业务工程使用发布包即可,无需此步骤。

科技主题

  • 位置(position)

    • 由“垂直方向 + 水平对齐”组合:top|bottom × left|center|right
    • 可选值:top-left、top-center、top-right、bottom-left、bottom-center、bottom-right
  • 动画(animation)

    • 可选:slide(默认)、fade、bounce、zoom
  • 自定义样式

    • 每条消息支持 className/style 参数。建议通过 CSS 变量/覆盖类名实现品牌化主题。

示例代码

1) 基本调用(类型化入口推荐)
import React from 'react'
import { toast } from 'yggjs_rtoast/tech'export function DemoButtons() {return (<div><button onClick={() => toast.success('保存成功!')}>成功</button><button onClick={() => toast.error('保存失败,请重试')}>失败</button><button onClick={() => toast.warning('磁盘空间不足')}>警告</button><button onClick={() => toast.info('系统将在5分钟后维护')}>信息</button><button onClick={() => toast.debug('Debug 信息,仅用于调试')}>调试</button></div>)
}
2) 通用入口 + 选项(自定义时长/动画/可关闭等)
import { toast } from 'yggjs_rtoast/tech'toast.toast('这是一条自定义消息', {type: 'info',duration: 6000,closable: true,animation: 'bounce',pauseOnHover: true,
})
3) 订阅数量变化(只读数组,拷贝后存入本地状态)
import React from 'react'
import { toast } from 'yggjs_rtoast/tech'
import type { ToastData } from 'yggjs_rtoast/tech'export function ToastCounter() {const [toasts, setToasts] = React.useState<ToastData[]>([])React.useEffect(() => {const unsubscribe = toast.subscribe((list) => setToasts([...list]))return unsubscribe}, [])return <div>当前消息数量:{toasts.length}</div>
}

提示:subscribe 返回“取消订阅函数”,请在组件卸载或 effect 清理阶段调用。


代码解释

  • 全局 API(toast 实例)

    • success/error/warning/info/debug(message, options?): 按类型展示消息,简单语义化,推荐使用。
    • toast(message, options?): 通用入口,适合高度自定义场景。
    • dismiss(id): 关闭指定消息;dismissAll(): 关闭所有消息。
    • subscribe(listener): 订阅消息列表变化;返回取消订阅函数。
    • getToasts(): 获取当前消息列表(ReadonlyArray)。
  • 常用选项(ToastOptions)

    • type:消息类型,默认 ‘info’
    • duration:自动关闭毫秒数,默认 4000;0 表示不自动关闭
    • closable:是否允许手动关闭,默认 true
    • animation:动画类型,默认 ‘slide’
    • pauseOnHover:鼠标悬停时是否暂停自动关闭,默认 true
    • icon:自定义图标(ReactNode)
    • className/style:覆盖样式
    • onClick/onClose:点击与关闭回调
  • 位置与堆叠

    • position 决定显示位置及堆叠方向;maxToasts 控制同屏最大显示条数(默认 5)。

属性

  • ToastOptions(创建时可选项)

    • type?: ‘success’ | ‘error’ | ‘warning’ | ‘info’ | ‘debug’(默认 ‘info’)
    • duration?: number(默认 4000;0 表示不自动关闭)
    • closable?: boolean(默认 true)
    • icon?: React.ReactNode
    • className?: string
    • style?: React.CSSProperties
    • onClick?: () => void
    • onClose?: () => void
    • animation?: ‘slide’ | ‘fade’ | ‘bounce’ | ‘zoom’(默认 ‘slide’)
    • pauseOnHover?: boolean(默认 true)
  • ToastData(展示中的消息结构,供订阅/调试使用)

    • id: string
    • message: React.ReactNode
    • createdAt: number
    • 以及合并后的 ToastOptions 实际值(含默认值)

方法

  • 全局 API(ToastAPI)
    • subscribe(listener: (toasts: ReadonlyArray) => void): () => void
    • toast(message: React.ReactNode, options?: ToastOptions): string
    • success/error/warning/info/debug(message, options?): string
    • dismiss(id: string): void
    • dismissAll(): void
    • getToasts(): ReadonlyArray

使用建议:

  • 优先使用类型化入口(success/error 等)以获得更语义化的调用;通用入口适合一次性高定制。
  • 订阅场景中,回调 toasts 为只读数组;如需入本地状态请浅拷贝:setState([…toasts])。
  • 注意取消订阅,避免内存泄漏。

总结

  • YggJS RToast 提供统一、稳定且可扩展的全局消息能力,贴合现代 React 项目需求。
  • “默认好用 + 渐进式增强”:默认配置开箱即用,复杂需求可以通过 options 与样式覆盖实现。
  • 建议在项目初始化阶段即引入,统一提示风格与交互行为,提升整体一致性与用户体验。
http://www.dtcms.com/a/342216.html

相关文章:

  • RoPE, 2D RoPE, 3D RoPE和复数
  • 安卓app、微信小程序等访问多个api时等待提示调用与关闭问题
  • 为什么会“偶发 539/500 与建连失败”
  • 如何通过传感器选型优化,为设备寿命 “续航”?
  • 微服务介绍及Nacos中间件
  • java⽇志体系
  • 桌面挂件不能承受之重——GIF
  • Windows 系统中,添加打印机主要有以下几种方式
  • 聚铭安全管家平台2.0实战解码 | 安服篇(四):重构威胁追溯体系
  • 新手向:Python开发简易网络服务器
  • 解决springai 项目中引入多个chatModel存在冲突问题
  • 服务器间大文件迁移
  • SparkSQL、FlinkSQL与普通sql比较
  • Git项目报错git@gitlab.com: Permission denied (publickey).【已解决】
  • Jenkins+GitLab在CentOS7上的自动化部署方案
  • iOS混淆工具实战 金融支付类 App 的安全防护与合规落地
  • 飞牛系统总是死机,安装个工具查看一下日志
  • Python爬虫的基础启航
  • 微算法科技(NASDAQ:MLGO)构建去中性化区块链预言机,实现跨链信息互通
  • 消息中间件(RocketMQ+RabbitMQ+Kafka)
  • 14. 多线程(进阶1) --- 常见的锁策略和锁的特性
  • 大模型自我进化框架SE-Agent:开启软件工程自动化新时代
  • Confluent 实时代理:基于 Kafka 流数据的创新实践
  • git 常用命令整理
  • 拂去尘埃,静待花开:科技之笔,勾勒城市新生
  • Linux基础(1) Linux基本指令(二)
  • 大模型推理并行
  • 机器学习7
  • 以往内容梳理--HRD与MRD
  • 《深入探索 Java IO 流进阶:缓冲流、转换流、序列化与工具类引言》