# @alessiocancian/react-native-actionsheet 中文文档

规范地址：https://npmcn.com/package/%40alessiocancian/react-native-actionsheet/

版本：3\.2\.0
npm 元数据更新时间：2022-11-17T23:01:40.148Z
中文译文更新时间：2026-11-06T01:42:54.516Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40alessiocancian/react-native-actionsheet
原文对照：https://npmcn.com/package/%40alessiocancian/react-native-actionsheet/?lang=original
项目主页：https://github.com/alessiocancian/react-native-actionsheet#readme
源码仓库：https://github.com/alessiocancian/react-native-actionsheet

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

- 包体积（解压后）：23.4 kB，12 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：prop-types \>=15\.4\.0，react \>=15\.4\.0，react-native \*
- 首次发布：2021-02-21T10:43:48.593Z
- 最新版本发布：2022-11-17T23:01:40.060Z
- 近 30 天下载量：7155（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 0 个）

## 中文简介

跨平台 ActionSheet. (原始内容存档于2012-10-12). 这个组件执行自定义的 ActionSheet ,并提供同样的方式来将它绘制在有缺陷的平台上(iOS和Android). 实际上,为了保持最佳效果,它仍然在iOS上使用ActionSheetIOS.

## 安装

```sh
npm install @alessiocancian/react-native-actionsheet
```

也可以使用：`pnpm add @alessiocancian/react-native-actionsheet`、`yarn add @alessiocancian/react-native-actionsheet`、`bun add @alessiocancian/react-native-actionsheet`

## README

# 反应-内在行动表

[![npm](https://img.shields.io/npm/v/@alessiocancian/react-native-actionsheet)](https://www.npmjs.com/package/@alessiocancian/react-native-actionsheet)  
跨平台 ActionSheet. (原始内容存档于2012-10-12). 这个组件执行自定义的 ActionSheet ,并提供同样的方式来将它绘制在有缺陷的平台上(iOS和Android). 实际上,为了保持最佳效果,它仍然在iOS上使用ActionSheetIOS.

<table><tbody><tr><td align="center"><img src="https://npmcn.com/package/%40alessiocancian/react-native-actionsheet/docs/ios-custom.png" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td><td align="center"><img src="https://npmcn.com/package/%40alessiocancian/react-native-actionsheet/docs/ios-native.png" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td></tr></tbody></table>

从 v3. 0. 0 开始, 具有类似本地 UI 的自定义 ActionSheet 可用并用作 iOS 的默认选项 :

<table><tbody><tr><td align="center"><img src="https://user-images.githubusercontent.com/18497523/124150424-d98de400-da91-11eb-94fb-2282624bf75f.png" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td><td align="center"><img src="https://user-images.githubusercontent.com/18497523/124150414-d72b8a00-da91-11eb-8be2-ff2d9ef2064a.png" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td></tr></tbody></table>

Android通过路过也可以使用类似的UI `theme="ios"`数字 :

<table><tbody><tr><td align="center"><img src="https://user-images.githubusercontent.com/18497523/124151227-9bdd8b00-da92-11eb-832b-18387354911e.jpeg" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td><td align="center"><img src="https://user-images.githubusercontent.com/18497523/124151223-9a13c780-da92-11eb-9d6c-b462517ebafc.jpeg" width="210" loading="lazy" decoding="async" referrerpolicy="no-referrer"></td></tr></tbody></table>

## 安装

```
npm i -S @alessiocancian/react-native-actionsheet
```

## 使用量

### 职能构成部分

```js
import { useRef } from 'react'
import ActionSheet from '@alessiocancian/react-native-actionsheet'

const Demo = () => {
  const actionSheetRef = useRef()

  const showActionSheet = () => {
    actionSheetRef.current.show()
  }
  
  render() {
    return (
      <View>
        <Text onPress={showActionSheet}>Open ActionSheet</Text>
        <ActionSheet
          ref={actionSheetRef}
          title={'Which one do you like ?'}
          options={['Apple', 'Banana', 'cancel']}
          cancelButtonIndex={2}
          destructiveButtonIndex={1}
          onPress={(index) => { /* do something */ }}
        />
      </View>
    )
  }
}
```

### 类组件

```js
import ActionSheet from '@alessiocancian/react-native-actionsheet'

class Demo extends React.Component {
  showActionSheet = () => {
    this.ActionSheet.show()
  }
  render() {
    return (
      <View>
        <Text onPress={this.showActionSheet}>Open ActionSheet</Text>
        <ActionSheet
          ref={o => this.ActionSheet = o}
          title={'Which one do you like ?'}
          options={['Apple', 'Banana', 'cancel']}
          cancelButtonIndex={2}
          destructiveButtonIndex={1}
          onPress={(index) => { /* do something */ }}
        />
      </View>
    )
  }
}
```

### 直接使用动作SheetCustom

您可以自定义选项和标题

```js
import { ActionSheetCustom as ActionSheet } from '@alessiocancian/react-native-actionsheet'

const options = [
  'Cancel', 
  'Apple', 
  <Text style={{color: 'yellow'}}>Banana</Text>,
  'Watermelon', 
  <Text style={{color: 'red'}}>Durian</Text>
]

class Demo extends React.Component {
  showActionSheet = () => {
    this.ActionSheet.show()
  }
  render() {
    return (
      <View>
        <Text onPress={this.showActionSheet}>Open ActionSheet</Text>
        <ActionSheet
          ref={o => this.ActionSheet = o}
          title={<Text style={{color: '#000', fontSize: 18}}>Which one do you like?</Text>}
          options={options}
          cancelButtonIndex={0}
          destructiveButtonIndex={4}
          onPress={(index) => { /* do something */ }}
        />
      </View>
    )
  }
}
```

### 如何重新设计风格?

ActionSheet 的样式定义于 [自由/风格.js](https://github.com/alessiocancian/react-native-actionsheet/blob/master/lib/styles.js)我们可以通过 `styles` 覆盖默认样式的道具 。 见 [示例](https://github.com/alessiocancian/react-native-actionsheet/blob/master/example/app/ExampleB.js#L48) 。 。 。 .

```javascript
// example

const styles = {
  titleBox: {
    background: 'pink'
  },
  titleText: {
    fontSize: 16,
    color: '#000'
  }
}

<ActionSheet
  ...
  styles={styles}
/>
```

## 道具

[https://github.com/alessiocancian/ react-native-actionsheet/blob/master/lib/options.js 互联网档案馆的存檔,存档日期2014-12-21](https://github.com/alessiocancian/react-native-actionsheet/blob/master/lib/options.js)

| 专利名称 | 类型 | 说明 | 默认 |
| --- | --- | --- | --- |
| 标题 | 字符串或反应节点 | Action Sheet Custom 需要使用 iOS 的 ReactNode |  |
| 消息 | 字符串或反应节点 | Action Sheet Custom 需要使用 iOS 的 ReactNode |  |
| 选项 | (弦 作反儿童) | ActionSheetCustom 需要使用 resact Child 选项用于 iOS |  |
| 颜色 | 字符串 |  |  |
| 取消按钮索引 | 编号 |  |  |
| 破坏性按钮索引 | 编号 |  |  |
| 新闻 | 函数 |  |  |
| 用户界面Style | "光" "黑暗" | RN版本 >=0.63 | 系统主题 |
| 主题 | "平地""欧斯" |  | android 和 iOS 本地或类似本地的平地 |
| 样式 |  | 仅用于动作SheetCustom | {} |
| 状态栏 | 布尔 | 只为Android服务 | 虚假 |

## 常见问题

### @alessiocancian/react-native-actionsheet 是什么？

跨平台 ActionSheet\. \(原始内容存档于2012-10-12\)\. 这个组件执行自定义的 ActionSheet ,并提供同样的方式来将它绘制在有缺陷的平台上\(iOS和Android\)\. 实际上,为了保持最佳效果,它仍然在iOS上使用ActionSheetIOS\.

### 如何安装 @alessiocancian/react-native-actionsheet？

在项目目录运行 npm install @alessiocancian/react-native-actionsheet，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：prop-types（\>=15\.4\.0）、react（\>=15\.4\.0）、react-native（\*）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @alessiocancian/react-native-actionsheet 支持 TypeScript 吗？

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

### @alessiocancian/react-native-actionsheet 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @alessiocancian/react-native-actionsheet 可以商用吗？

@alessiocancian/react-native-actionsheet 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @alessiocancian/react-native-actionsheet 的下载量有多少？

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

### @alessiocancian/react-native-actionsheet 还在维护吗？

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

