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

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

版本：1\.2\.2
npm 元数据更新时间：2026-11-11T15:05:18.914Z
中文译文更新时间：2026-11-11T15:19:58.070Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：372 kB，72 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：11 个
- peer 依赖：@cloud-ru/ds-locale ^1\.0\.0
- 首次发布：2026-08-18T12:41:41.966Z
- 最新版本发布：2026-11-11T15:05:18.533Z
- 近 30 天下载量：17001（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：131（近 12 个月 131 个）

## 中文简介

\+ \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*.

## 安装

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

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

## README

# 下坠

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

Выпадающий:произвольный也 `loading / not-found / no-data / data-error` через `state`。 。 。 `PopoverPrivate` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得怎样.

## Когда

-   Меню(一作экспорт.
-   \* \* \* \* \* \* \* \* 建议 \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\* \* \* \* \* \* \* \* \* \* \* \* \*\* \* \* \*\* \*\* \*\* \* \*\* \*\* \*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* `state` (原始内容存档于2018-09-21). UI.
-   Композитные:селекторы也.

Когда **не** нужен `Dropdown`для: `Tooltip`, для , выбора `Modal` или `Popover`。 。 。 .

## Анатомия

### 状态

校对:Soup `loading` - , `no-data` - у(первая), `not-found` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢, `data-error` . . . . . . .

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

{\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}♪#################################### ################################################################################################################################################################################################ Для也 `Droplist` из `@cloud-ru/ds-list`\-=ytet -伊甸园字幕组=- 翻译: `limitedScrollHeight`。 。 。 .

### 宽度策略( 默认) `gte`(中文(简体) )

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我们来谈谈吧

-   `auto` - потриггерне.
-   `eq` - ровно по: `width` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢.
-   `gte` . . . . . . `min-width` равна.

Разница `gte` и `eq` видна,когда也 **шире** триггера: `eq` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你还不知道吗, `gte` даст. ================================================================================================================================================================================================== `auto` 40岁, `eq` и `gte` ——96岁.

Значения `gte` (原始内容存档于2018-10-25). QQ: Figma QQ: ~ API ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ , ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ .

## Установка

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

```ts
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown'
```

## Примеры

### Базовый倒地

```tsx
import { Button } from '@cloud-ru/ds-button';
import { Dropdown } from '@cloud-ru/ds-dropdown';

export function Basic() {
  return (
    <Dropdown content={<div style={{ padding: 12 }}>Контент меню</div>}>
      <Button label='Открыть' />
    </Dropdown>
  );
}
```

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

——开通

```tsx
import { Button } from '@cloud-ru/ds-button';
import { Dropdown } from '@cloud-ru/ds-dropdown';

export function OpenForReview() {
  return (
    <Dropdown content={<div style={{ padding: 12 }}>Видимое содержимое</div>}>
      <Button label='Триггер' />
    </Dropdown>
  );
}
```

### 装入

```tsx
import { Button } from '@cloud-ru/ds-button';
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown';

export function Loading() {
  return (
    <Dropdown state={{ type: STATE.Loading }} content={null}>
      <Button label='Загрузка' />
    </Dropdown>
  );
}
```

### 没有找到的

```tsx
import { Button } from '@cloud-ru/ds-button';
import { Dropdown, STATE } from '@cloud-ru/ds-dropdown';

export function NotFound() {
  return (
    <Dropdown
      state={{
        type: STATE.NotFound,
        content: 'Ничего не нашли',
        actionLabel: 'Сбросить фильтры',
        onActionClick: () => {},
      }}
      content={null}
    >
      <Button label='Поиск' />
    </Dropdown>
  );
}
```

## 道具

**下拉选项**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `bodyPadding` | `boolean` | `true` | {\\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` - убрать (контент; на; на; на `BottomSheet`) (中文(简体) ). |
| `children` | `string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined` | —— 说 |  |
| `className` | `string` | —— 说 | 支助科 |
| `closeOnEscapeKey` | `boolean` | `true` | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `Esc` |
| `closeOnPopstate` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `container` | `RefObject<HTMLElement | null>` | —— 说 | Контейнер ( ref). Переопределяет `PortalContext` для,этого  
по аналогии `container` 莫道尔/德劳尔。 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `PortalContextProvider`。 。 。 . |
| `content` | `ReactNode` | —— 说 | Содержимое(体) |
| `data-test-id` | `string` | —— 说 |  |
| `defaultSnapIndex` | `number` | —— 说 | (原始内容存档于2018-03-21) (中文(简体) ). `BottomSheet`) (中文(简体) ). |
| `disableSpanWrapper` | `boolean` | —— 说 | Отключает `isValidElement` {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢  
{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `position: absolute`  
{\\fn黑体\\fs20\\shad2\\2aH82\\3aH20\\4aH33\\fscx95\\3cH592001\\be1}♪############################# #######################################################################################################################################################################################################, `forwardRef`\- компоненты  
{\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你觉得呢 `withInnerRefSupport` из `@cloud-ru/ds-utils`{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `<span>` —— 说  
{\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}#####################################################################################################################################################################################################################################. |
| `fallbackPlacements` | `Placement` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢. |
| `footer` | `ReactNode` | —— 说 | Слот(下巴) |
| `footerDivider` | `boolean` | —— 说 | 分裂者 {正文} |
| `headerDivider` | `boolean` | —— 说 | 分裂者 \\\\ \\ \\ \\ \\ \\ \\ 身体 |
| `hoverDelayClose` | `number` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `hoverDelayOpen` | `number` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `offset` | `number` | `0` | \[永久失效連結\] (中文(简体) ). |
| `onOpenChange` | `((isOpen: boolean) => void)` | —— 说 | Колбек. 打开. |
| `open` | `boolean` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢. |
| `outsideClick` | `OutsideClickHandler` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `placement` | `"bottom"` | `"bottom-end"` | `"bottom-start"` | `"left"` | `"left-end"` | `"left-start"` | `"right"` | `"right-end"` | `"right-start"` | `"top"` | `"top-end"` | `"top-start"` | `top` | (原始内容存档于2019-09-29) (中文(中国大陆) ). |
| `search` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你来干什么 |
| `slotAfterTitle` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢. `<QuestionTooltip />`(中文(简体) ) |
| `snapPoints` | `SnapPoint` | `['fit-content']` | 手机:snap-точки `BottomSheet`а (высота. {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}请说. |
| `state` | `ActionButtonProps` | `BlockProps` | `BlockPropsWithIcon` | `DropdownState` | —— 说 | Состояние |
| `stopPropagation` | `StopPropagationHandlers` | `{ onClick: true, onMouseDown: true, onMouseUp: true, onTouchStart: true, onTouchEnd: true, onTouchMove: true }` | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}========================================================================================== (==================================================================`stopPropagation`) (中文(简体) ).  
{\\fn华文仿宋\\fs16\\1cHD1D1D1}好! 拖放 拖放 拖放  
`onMouseUp` 编号 : `onTouchEnd`, 翻译 : `document`。 。 。 . |
| `title` | `ReactNode` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你来干什么 |
| `trigger` | `"click"` | `"clickAndFocusVisible"` | `"focus"` | `"focusVisible"` | `"hover"` | `"hoverAndFocus"` | `"hoverAndFocusVisible"` | —— 说 | 说吧  
\- 说吧 `click` - открывать по  
\- 说吧 `hover` - открывать по  
\- 说吧 `focusVisible` - 重点可见  
\- 说吧 `focus` - открывать по  
\- 说吧 `hoverAndFocusVisible` -=ytet -伊甸园字幕组=- 翻译:  
\- 说吧 `hoverAndFocus` - открывать ховеру и  
\- 说吧 `clickAndFocusVisible` -=ytet -伊甸园字幕组=- 翻译: |
| `triggerClassName` | `string` | —— 说 | CSS - класс триггера |
| `triggerClickByKeys` | `boolean` | `true` | \# # # # # # # # # # # # # # # # # # # # # # # # # # # # # 触发 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # `click`(中文(简体) ) |
| `triggerRef` | `ForwardedRef<HTMLElement | ReferenceType | null>` | —— 说 | 参考文献: |
| `widthStrategy` | `"auto"` | `"eq"` | `"gte"` | `auto` | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢  
\- 说吧 `auto` - соответствует,ширине,  
\- 说吧 `gte` - 伟大或平等, \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\,  
\- 说吧 `eq` - 平等, \\ \\ \\ \\ \\. |

#### 相关类型

**动作按钮Props**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `actionLabel` | `string | undefined` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |
| `onActionClick` | `(() => void) | undefined` | —— 说 | {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 |

**块选项**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `content` | `string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined` | —— 说 | Подзаголовок |

**块Props WithIcon 软件**

| Prop | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `content` | `string | number | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | null | undefined` | —— 说 | Подзаголовок |
| `icon` | `IconPredefinedProps` | —— 说 | Иконка |

-   `DropdownState` =: `{ type: typeof STATE.Loading; } | ({ type: typeof STATE.NotFound; } & ActionButtonProps & BlockProps) | ({ type: typeof STATE.NoData; } & ActionButtonProps & BlockPropsWithIcon) | ({ type: typeof STATE.DataError; } & ActionButtonProps & BlockPropsWithIcon)`

## Адаптивность

`Dropdown` ——"с"("地上"-"花"). {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}你觉得呢 `AdaptiveProvider` 页:1 `@cloud-ru/ds-adaptive`API :

-   **桌面** {\\fn黑体\\fs20\\shad2\\2ah82\\3ah20\\4ah33\\fscx95\\3ch592001\\be1}(@################################## ############################################################################################################################################################.
-   **移动** - контент рендерится рендерится `BottomSheet` из `@cloud-ru/ds-bottom-sheet` (панель也.

\* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* `<AdaptiveProvider>` \[永久失效連結\] (中文(简体) ). Пропа `layoutType` у:источник也.

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

\- Форс,не:

-   Поддерево:
    
    ```tsx
    import { AdaptiveProvider } from '@cloud-ru/ds-adaptive'
    
    <AdaptiveProvider layoutType='mobile'>
      <Dropdown content={…}>…</Dropdown>
    </AdaptiveProvider>
    ```
    
-   – Отдельный – `withLayoutType` (模块-镜, сахар:
    
    ```tsx
    import { withLayoutType } from '@cloud-ru/ds-adaptive'
    import { Dropdown } from '@cloud-ru/ds-dropdown'
    
    const MobileDropdown = withLayoutType(Dropdown, 'mobile')
    ```
    

### Платформенные

{\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}============================================================================ -========================================================================================================================================================== `BottomSheet` (原始内容存档于2018-09-28). QQ. ========================================================================================================================================================= `DropdownProps`。 。 。 .

| Пропы | 桌面 | 移动 |
| --- | --- | --- |
| `placement`, (中文(简体) ), `widthStrategy`, (中文(简体) ), `offset`, (中文(简体) ), `fallbackPlacements` | используется | игнорируется |
| `hoverDelayOpen`, (中文(简体) ), `hoverDelayClose`, (中文(简体) ), `closeOnEscapeKey`, (中文(简体) ), `triggerClickByKeys`, (中文(简体) ), `outsideClick` | используется | игнорируется |
| `disableSpanWrapper`, (中文(简体) ), `triggerClassName`, (中文(简体) ), `triggerRef`, (中文(简体) ), `container` | используется | игнорируется |
| `content`, (中文(简体) ), `title`, (中文(简体) ), `slotAfterTitle`, (中文(简体) ), `search`, (中文(简体) ), `footer`, (中文(简体) ), `headerDivider`, (中文(简体) ), `footerDivider` | используется | используется |
| `state`, (中文(简体) ), `open`, (中文(简体) ), `onOpenChange`, (中文(简体) ), `closeOnPopstate`, (中文(简体) ), `className` | используется | используется |

手机 手机 `BottomSheet` берётся `@cloud-ru/ds-portal-context`时 `container` не.

Подробнее модели- **适应性**。 。 。 .

## 常见问题

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

\+ \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \* \*\.

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

在项目目录运行 npm install @cloud-ru/ds-dropdown，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@cloud-ru/ds-locale（^1\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

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

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

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

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

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

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

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

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

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

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

