@cloud-ru/ds-attachment

中文文档
1.1.32发布于 2026/11/11Apache-2.0TypeScriptESM + CJS近 30 天下载 5838

=============================================== ========================================================================================================================================.

中文使用文档
文档目录13 节
  1. Когда
  2. Анатомия
  3. Установка
  4. 附录
  5. Когда
  6. Анатомия
  7. Примеры
  8. 道具
  9. 附录平方
  10. Когда
  11. Анатомия
  12. Примеры
  13. 道具

附录

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

Пакет @cloud-ru/ds-attachment {\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}我还得去.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢 s 编号 : m时 loading编号 :error编号 :disabled编号 :checked ? ? ? ? ? ? ? ? ? ? file - 额...

Когда

  • {\fn方正准圆简体\fs12\1cHC9ECC4}我.. Attachment。 。 。 .
  • 状态 hovered- 覆盖 - AttachmentSquare。 。 。 .

Когда не * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * ** ******* Dropzone; qq预览-qq动作- Card。 。 。 .

Анатомия

[永久失效連結] (中文(简体) ) file(+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++download 编号 : delete时 retry qq错误).

Установка

pnpm add @cloud-ru/ds-attachment
import { Attachment, AttachmentSquare } from '@cloud-ru/ds-attachment'

附录

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? ———————————————————————— file ——————————————————————————————————————————download 编号 : delete时 retry {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢.

Когда

  • {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢.
  • Когда у File- ? ? - ? - ? - ? - ? - ? - ? - ? - ? - .

Когда не нужен Attachment数字 :

  • . . . . AttachmentSquare。 。 。 .
  • QQ 拖放 QQ — Dropzone。 。 。 .

Анатомия

大小( 默认) s(中文(简体) )

  • s ——qq,48px(标本为32+2×8贴花).
  • m ——×××,××××活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活.

QQ内容驱动:QQ标志''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Токены attachment.anatomy.size.*.container.height {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得怎么样 AttachmentSquare{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我还得说.

状态

Состояния:

  • loading 行动.
  • disabled - 行动通过 onDelete编号 :onDownload。 。 。 .
  • error . . . . . retry заменяет download; фон; карточки red/background。 。 。 .
  • checked - 口音边境 primary/accent + 重音状态级(activated/default/filled盘旋着.. activated/hovered/filled) + 检查标签 + + + + + .

Внутри Card с view='outline'; ; ; ; ; ; ; ; cursor: pointer{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}重点在心 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我.. onClick。 。 。 .

Примеры

附录

文件 {} 上下载

import { Attachment } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function BasicAttachment() {
  return <Attachment file={PDF_FILE} onDownload={file => console.info('download', file?.name)} />;
}

С

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}用图

import { Attachment } from '@cloud-ru/ds-attachment';
import { useEffect, useState } from 'react';

import pictureUrl from './picture.jpg?url';

export function AttachmentWithImage() {
  const [file, setFile] = useState<File>();

  useEffect(() => {
    fetch(pictureUrl)
      .then(r => r.blob())
      .then(blob => setFile(new File([blob], 'picture.jpg', { type: 'image/jpg' })));
  }, []);

  return (
    <Attachment
      file={file}
      title='Скриншот'
      description='JPG'
      onDownload={f => console.info('download', f?.name)}
      onDelete={f => console.info('delete', f?.name)}
    />
  );
}

正在装入

* 行动 *

import { Attachment } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function AttachmentLoading() {
  return <Attachment file={PDF_FILE} loading />;
}

QQ 复试

错误 qq 描述; 重试按钮 qq 下载

import { Attachment } from '@cloud-ru/ds-attachment';
import { useState } from 'react';

import { PDF_FILE } from './sample';

export function AttachmentError() {
  const [retries, setRetries] = useState(0);

  return (
    <Attachment
      file={PDF_FILE}
      error={`Не удалось загрузить (попыток: ${retries})`}
      onRetry={() => setRetries(n => n + 1)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}

Выбираемый(受控)

选中 + 在 Click 上 — — — QQ 多选择

import { Attachment } from '@cloud-ru/ds-attachment';
import { useState } from 'react';

import { PDF_FILE } from './sample';

export function AttachmentSelectable() {
  const [checked, setChecked] = useState(false);

  return (
    <Attachment
      file={PDF_FILE}
      checked={checked}
      onClick={() => setChecked(v => !v)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}

道具

附件选项

Prop类型默认说明
checkedboolean—— 说Состояние(множественный)
classNamestring—— 说CSS - класс корня
data-test-idstring—— 说
descriptionstringfileExtensionОписание
disabledboolean—— 说Заблокировано
errorstring—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
fileFile—— 说Файл
fullWidthbooleantrueРастянуть. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢.
iconJSXElementConstructor<{ size?: number; className?: string; }> | undefined—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
@ 默认Icon 文件SVG
loadingboolean—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onClick((event: MouseEvent<HTMLDivElement, MouseEvent>) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onDelete((file?: File) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onDownload((file?: File) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onRetry(() => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
size"m" | "s"sРазмер
titlestringfileNameЗаголовок
truncate{ title?: number; description?: number; error?: number | undefined; } | undefined—— 说
truncateVariant"end" | "middle"—— 说说吧

- 说吧 end - с;

- 说吧 middle {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢
  • Size =: "m" | "s"

附录平方

{\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}=======================================================================================================================================================================================================================================.

Когда

  • {\fn黑体\fs20\shad2\2aH82\3aH20\4aH33\fscx95\3cH592001\be1}你觉得怎么样.
  • Когда,важна s (80x80) (中文(简体) ) m (100×100) (中文(简体) ).

Анатомия

大小( 默认) s(中文(简体) )

  • s ——80×80 (中文(简体) ).
  • m ——100×100 (中文(简体) ).

重叠管理

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}嘿 伙计们 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我..download编号 :delete编号 :retry* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * В 图像模式 覆盖 qq( 固态) neutral/background1Level) и; в 图标模式 -=YTET -伊甸园字幕组=- 翻译: {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}谢谢 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080} AttachmentFocusActionsContext。 。 。 .

状态

  • loading 行动 盘旋重叠.
  • disabled -=ytet -伊甸园字幕组=- 翻译: effect/opacity/disabled。 。 。 .
  • error - фон тайла переключается red/background动作 retry заменяет download; turn-qq overing qq, qq qq +q.
  • checked ——口音-边界+++++ checkedOverlay поверх 主会с activated/default/filled → activated/hovered/filled (Card-QQ 状态层 QQ 完整出血的画面,QQ 上覆QQ). 校对:Soup.

Примеры

Базовый

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

import { AttachmentSquare } from '@cloud-ru/ds-attachment';

import { PDF_FILE } from './sample';

export function AttachmentSquareBasic() {
  return (
    <AttachmentSquare
      file={PDF_FILE}
      onDownload={file => console.info('download', file?.name)}
      onDelete={file => console.info('delete', file?.name)}
    />
  );
}

С(大小为m)

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

import { AttachmentSquare } from '@cloud-ru/ds-attachment';
import { useEffect, useState } from 'react';

import pictureUrl from './picture.jpg?url';

export function AttachmentSquareImage() {
  const [file, setFile] = useState<File>();

  useEffect(() => {
    fetch(pictureUrl)
      .then(r => r.blob())
      .then(blob => setFile(new File([blob], 'picture.jpg', { type: 'image/jpg' })));
  }, []);

  return (
    <AttachmentSquare
      size='m'
      file={file}
      onDownload={f => console.info('download', f?.name)}
      onDelete={f => console.info('delete', f?.name)}
    />
  );
}

道具

附件方块方案

Prop类型默认说明
checkedboolean—— 说Состояние(множественный)
classNamestring—— 说CSS - класс корня
data-test-idstring—— 说
descriptionstringfileExtensionОписание
disabledboolean—— 说Заблокировано
errorstring—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
fileFile—— 说Файл
iconJSXElementConstructor<{ size?: number; className?: string; }> | undefined—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
@ 默认Icon 文件SVG
loadingboolean—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onClick((event: MouseEvent<HTMLDivElement, MouseEvent>) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onDelete((file?: File) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onDownload((file?: File) => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
onRetry(() => void)—— 说{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢
size"m" | "s"sРазмер
titlestringfileNameЗаголовок
truncateVariant"end" | "middle"—— 说说吧

- 说吧 end - с;

- 说吧 middle {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你觉得呢
  • Size =: "m" | "s"

版本与发布记录

@cloud-ru/ds-attachment 共发布 143 个版本,首次发布于 2026/08/18;过去 12 个月发布了 143 个版本。

版本发布日期距今
1.1.32latest2026/11/11今天
1.1.32-preview-e8fe6b56.0preview2026/11/11今天
1.1.32-preview-c0e895ed.02026/11/11今天
1.1.32-preview-90b10112.02026/11/11今天
1.1.32-preview-fd7dd437.02026/11/101 天前
1.1.32-preview-9a75a2a9.02026/11/101 天前

关于 @cloud-ru/ds-attachment 的常见问题

@cloud-ru/ds-attachment 是什么?

=============================================== ========================================================================================================================================.

如何安装 @cloud-ru/ds-attachment?

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

@cloud-ru/ds-attachment 支持 TypeScript 吗?

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

@cloud-ru/ds-attachment 支持 ESM 还是 CommonJS?

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

@cloud-ru/ds-attachment 可以商用吗?

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

@cloud-ru/ds-attachment 的下载量有多少?

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

@cloud-ru/ds-attachment 还在维护吗?

最新版本 1.1.32 发布于 2026/11/11(今天);至今共发布 143 个版本,其中过去 12 个月发布了 143 个;首次发布于 2026/08/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。