# @cloud-ru/ds-toaster 中文文档

规范地址：https://npmcn.com/package/%40cloud-ru/ds-toaster/

版本：1\.1\.6
npm 元数据更新时间：2026-11-11T15:04:25.313Z
中文译文更新时间：2026-11-11T21:42:42.465Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cloud-ru/ds-toaster
原文对照：https://npmcn.com/package/%40cloud-ru/ds-toaster/?lang=original
项目主页：https://github.com/cloud-ru-tech/snack-v2/tree/master/packages/toaster
源码仓库：https://github.com/cloud-ru-tech/snack-v2

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.1 MB，318 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：9 个
- 首次发布：2026-08-18T12:41:28.467Z
- 最新版本发布：2026-11-11T15:04:24.920Z
- 近 30 天下载量：3213（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：83（近 12 个月 83 个）

## 中文简介

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢.

## 安装

```sh
npm install @cloud-ru/ds-toaster
```

也可以使用：`pnpm add @cloud-ru/ds-toaster`、`yarn add @cloud-ru/ds-toaster`、`bun add @cloud-ru/ds-toaster`

## README

# 烤面包机

`@cloud-ru/ds-toaster` -=YTET -伊甸园字幕组=- 翻译:.

校对:Soup

-   **敬酒节** —— (出场5个出场,链接,动作). 自动解职5s,QQ堆.
-   **用户行动** ——回馈 на (副本,保存). 自动解职2s.
-   **向上加载** - прогресс файлов (мульти-файл,暂停/复出).

单子 `toaster`数字 :

```ts
import { toaster } from '@cloud-ru/ds-toaster'

toaster.systemEvent.success({ title: 'Сохранено' })
toaster.userAction.neutral({ label: 'Скопировано' })
toaster.upload.startOrUpdate({ status: 'loading', files, progress: { current: 0, total: files.length } })
```

## Когда

-   **系统事件** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080} -=ytet -伊甸园字幕组=- 翻译:.
-   **用户动作** -=ytet -伊甸园字幕组=- 翻译:.
-   **上传** -=ytet -伊甸园字幕组=- 翻译:.

Когда **не** нужны:

-   (原始内容存档于2018-09-21). QQ – используй Modal/Dialog.
-   QQ QQ = QQ – QQ 提醒/ InfoBlock.
-   (原始内容存档于2017-10-29). Inline-QQ 出错-状态.

## Анатомия

По **系统Event {}上传}{}{}{}{}{}}}{}}{}{}}}{}}}}{}}}}** (图26297:48316). 上传-QQQQQ,系统Event--------------,--- `Expand`编号 :`Close all` посередине. (原始内容存档于2019-09-29). SystemEvent-,上传. (原始内容存档于2018-09-29). User Action QQ (другая, pill-стиль).

```tsx
<>
  {/* shared контейнер для SystemEvent + Upload */}
  <ToasterContainer
    type={TOASTER_TYPE.SystemEvent}
    position='bottom-right'
    stacked
    displayCloseAllButton
    limit={5}
    autoClose={5000}
  />
  {/* UserAction — отдельно */}
  <ToasterContainer type={TOASTER_TYPE.UserAction} />
</>
```

• 系统Event {上传-}} `containerId` явно, и `<ToasterContainer/>`。 。 。 .

Менеджер,мультиплексирует也 `containerId`。 。 。 .

### 类型

\- Тип,какой,компонент:

-   `systemEvent` . . . . `ToastSystemEvent`) (中文(简体) ).
-   `userAction` - 吃药后退(`ToastUserAction`) (中文(简体) ).
-   `upload` - карточка(загрузки)`ToastUpload`) (中文(简体) ).

### 位置( 默认 ) `TOASTER_CONTAINER_DEFAULTS[type]`(中文(简体) )

说吧

-   `SystemEvent` 6 положений: `top-left`, (中文(简体) ), `top-center`, (中文(简体) ), `top-right`, (中文(简体) ), `bottom-left`, (中文(简体) ), `bottom-center`, (中文(简体) ), `bottom-right`。 。 。 .
-   `UserAction` использует `top-center` 编号 : `bottom-center`。 。 。 .

### 限制( 默认) `5` 系统Event, `2` 用户动作, `1` qQ 上传)

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}#################################################(最新)################################################################################################################################################################################### Передай `limit: 0` . . . . . .

### 自动关闭( 默认) `5000` 系统Event, `2000` 用户动作, `false` qQ 上传)

{\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}你觉得怎么样 决心: `toastOptions.autoClose` (每只鱼) • `<ToasterContainer autoClose>` (每个集装箱) • `AUTO_CLOSE_TIME[type]` (глобальный. Передать `false` - автозакрытие по умолчанию умолчанию умолчанию.

### 堆叠( 默认) `false`(中文(简体) )

`stacked` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}"鬼魂" {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}"鬼魂" {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}"鬼魂" {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你还好吧.

### 可拖曳( 默认) `false`————————————

`draggable` {\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}你觉得呢? {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -=YTET -伊甸园字幕组=- 翻译: (原始内容存档于2018-10-29). CSS-.

`draggableDirection` (单位:千美元)`x` | `y`задаёт ось. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `position`数字 : `top-center` 编号 : `bottom-center` → `y` ( `x` (свайп. Во. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080} - - - - - {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080} - {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080} - {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}`touch-action: pan-x` 编号 : `pan-y`),"свайп"作"конфликтует".

**校对:Soup** {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}我.. `position: fixed` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `.toasterRoot` (单位:千美元)`container-type: size` 包含块块). {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `@cloud-ru/ds-scroll`\- 主持人' {} `overflow: hidden` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? # # # # # # # # # # # DOM # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # `.toasterRoot` \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*`transform`, (中文(简体) ), `filter`, (中文(简体) ), `will-change`, (中文(简体) ), `contain`),"и","и"等. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你还好吧.

### 倒行逆流( +++++ 取景口, +++) `toasterParent`(中文(简体) )

说吧

-   **Ширина.** `.container` и `.toast` зажаты в `min(maxWidth, 100cqw - 2*paddingHorizontal)` - на экране применяется `maxWidth` из,на也 `paddingHorizontal` от. `100cqw` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `.toasterRoot` ( `toasterParent` через `position: absolute; inset: 0; container-type: size`),"есть","取景". Дефолт `toasterParent = document.body` сохраняет.
-   **Высота.** {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `<Scroll>` (单位:千美元)`@cloud-ru/ds-scroll`с `max-height: min(100cqh, 100dvh) - 2*paddingVertical`。 。 。 . `min(cqh, dvh)` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `cqh` =============================================================================================================================================================================================================================================================== `dvh` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.

Кастомный `toasterParent` (单位:千美元)`openToast({ ..., toasterParent })`: `HTMLElement` —— 说 `helpers.tsx` вставит `<div data-toaster-root>` с `container-type: size`{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我还得说 Для,чтобы也 `data-toaster-root` \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*`transform` 编号 : `filter` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}什么.

### 装箱Id {}

Дефолтный `containerId` – для – `toaster-container__<type>`。 。 。 `<ToasterContainer/>` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `containerId`页:1 `toaster.<type>.*({ containerId })` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.

## Установка

Требует `react@>=18` и `react-dom@>=18` (单位:千美元) `react-dom/client`{\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}请说 (原始内容存档于2019-10-21). QQ QQ – 设计选择.

```bash
pnpm add @cloud-ru/ds-toaster
```

```ts
import {
  ToasterContainer,
  ToastSystemEvent,
  ToastUserAction,
  ToastUpload,
  toaster,
  TOASTER_TYPE,
  UploadItem,
} from '@cloud-ru/ds-toaster'
```

## 道具

### 烤面包机

**烤面包机选项**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `autoClose` | `number | false` | —— 说 | {\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}你觉得怎样? Используется,  
если в `toastOptions.autoClose` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? Передать `false` —— 说  
{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? Если:не也 `AUTO_CLOSE_TIME[type]`。 。 。 . |
| `containerId` | `string` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得怎么样? Вызов  
`toaster.<type>.open({ containerId })` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你是谁  
{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得怎么样? {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢  
`toaster-container__<type>` (см. `TOASTER_CONTAINER_PREFIX`) ,(中文)  
{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `type`. . . . .  
{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢. |
| `data-test-id` | `string` | —— 说 | 覆盖 `data-test-id` корня. . . . .  
`TEST_IDS.toasterContainer`Имеет,если也  
{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢. |
| `displayCloseAllButton` | `boolean` | —— 说 |  |
| `draggable` | `boolean` | —— 说 |  |
| `draggableDirection` | `"x"` | `"y"` | —— 说 |  |
| `limit` | `number` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢? (原始内容存档于2017-10-21). QQ--TOSTER CONADEAULTS\[类型\]. |
| `position` | `"bottom-center"` | `"bottom-left"` | `"bottom-right"` | `"top-center"` | `"top-left"` | `"top-right"` | —— 说 |  |
| `stacked` | `boolean` | —— 说 |  |
| `type` | `"system-event"` | `"upload"` | `"user-action"` | —— 说 |  |
| `width` | `"auto"` | `"full"` | —— 说 |  |

#### 相关类型

-   `DraggableDirection` =: `"x"` | `"y"`
    
-   `SystemEventPosition` =: `"bottom-center"` | `"bottom-left"` | `"bottom-right"` | `"top-center"` | `"top-left"` | `"top-right"`
    
-   `ToasterWidth` =: `"auto"` | `"full"`
    

## 故事书

游戏场 — QQ道具 — 控制 :

### 堆叠 `stacked` + 键 `displayCloseAllButton`

Шесть,у也 `stacked`, (中文(简体) ), `limit: 5`, (中文(简体) ), `autoClose: 5000`. . . . . . 躲开 躲开 躲开 `Expand` 编号 : `Close all` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.

### · 6个

Демонстрация `position` для `SystemEvent` (单位:千美元)`top-left` 编号 : `top-center` 编号 : `top-right` 编号 : `bottom-left` 编号 : `bottom-center` 编号 : `bottom-right`)———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— `slide-in` транзишен.

### 触发器 ^ API

{\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}你觉得怎样`toaster.systemEvent.success`, (中文(简体) ), `…neutral`, (中文(简体) ), `…error`, (中文(简体) ), `userAction`, (中文(简体) ), `upload`) (中文(简体) ). {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢.

### 更新Flow.. `id` + 键 `update`\- семантика

Длительный:один也 `loading → success → error`Демонстрирует `toaster.upload.startOrUpdate(...)` /возврат `id` и `update`。 。 。 .

### \- 移动电话 `toasterParent` +qq 视图端口

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `toasterParent={frameRef.current}`Ширина/высота `cqw` 编号 : `min(cqh, dvh)`, QQ-倒闭 QQ-, 刷新到发 (QQ). ====================================================================================================== ========================================================================================================== (====================== (======================.

## 常见问题

### @cloud-ru/ds-toaster 是什么？

\{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080\}你觉得呢\.

### 如何安装 @cloud-ru/ds-toaster？

在项目目录运行 npm install @cloud-ru/ds-toaster，或使用 pnpm add / yarn add / bun add。

### @cloud-ru/ds-toaster 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @cloud-ru/ds-toaster 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @cloud-ru/ds-toaster 可以商用吗？

@cloud-ru/ds-toaster 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cloud-ru/ds-toaster 的下载量有多少？

根据 npm 官方下载统计，@cloud-ru/ds-toaster 在 2026/10/10 – 2026/11/08 这 30 天内被下载 3,213 次，日均约 107 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cloud-ru/ds-toaster 还在维护吗？

最新版本 1\.1\.6 发布于 2026/11/11（今天）；至今共发布 83 个版本，其中过去 12 个月发布了 83 个；首次发布于 2026/08/18。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

