---
title: "openMiniWidget - 打开小部件弹窗"
---

---

name: "openMiniWidget"
mode: "kit"
versionRequirements:
  - { name: "BaseKit", version: "3.0.3" }
  - { name: "@ray-js/ray", version: "0.8.0" }
platform:
  - "iOS"
  - "Android"
async: true
title: "openMiniWidget - 打开小部件弹窗"
---
## openMiniWidget

> [VERSION] BaseKit >= 3.0.3 | @ray-js/ray >= 0.8.0

> [PLATFORM] iOS, Android

> ⚡ **支持 Promise 调用** — 不传 success / fail / complete 回调时，该方法返回 Promise。

### 描述

打开小部件弹窗

### 参数

| 属性 | 类型 | 必填 | 默认值 | 最低版本 | 描述 |
| --- | --- | --- | --- | --- | --- |
| `appId` | `string` | 是 | - | `3.0.3` | 要打开的小部件appid |
| `pagePath` | `string` | 否 | - | `3.0.3` | 对应的小部件页面相对url, 如果为空则打开首页,path 中 ? 后面的部分会成为 query |
| `deviceId` | `string` | 否 | - | `3.0.3` | 面板类型设备id |
| `groupId` | `string` | 否 | - | `3.0.3` | 面板群组类型群组id |
| `style` | `string` | 否 | `"middle"` | `3.0.3` | 小部件样式,默认middle |
| `versionType` | `"release" \| "preview"` | 否 | `'release'` | `3.0.3` | 版本类型,默认release |
| `version` | `string` | 否 | - | `3.0.3` | 版本号 |
| `position` | `"bottom" \| "top" \| "center"` | 否 | `'bottom'` | `3.0.3` | 展示位置,默认bottom |
| `autoDismiss` | `boolean` | 否 | `true` | `3.0.4` | 点击空白处是否关闭 |
| `autoCache` | `boolean` | 否 | `true` | `3.1.0` | 是否优先展示默认缓存 对应属性在小程序容器3.1.0生效 |
| `supportDark` | `boolean` | 否 | `true` | `3.1.3` | 是否支持深色模式 |
| `complete` | `() => void` | 否 | - | - | 接口调用结束的回调函数（调用成功、失败都会执行） |
| `success` | `() => void` | 否 | - | - | 接口调用成功的回调函数 |
| `fail` | `(params: Object) => void` ↓见下方 | 否 | - | - | 接口调用失败的回调函数 |

#### fail 回调参数

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorMsg` | `string` | 错误信息 |
| `errorCode` | `string \| number` | 错误码 |
| `innerError` | `Object` | 错误扩展 |

##### fail(params).innerError 的属性

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `errorCode` | `string \| number` | 错误扩展码 |
| `errorMsg` | `string` | 错误扩展信息 |


### 合法值

##### `versionType` 合法值

| 值 | 说明 |
| --- | --- |
| `"release"` | 线上版本 |
| `"preview"` | 预发版本 |

##### `position` 合法值

| 值 | 说明 |
| --- | --- |
| `"bottom"` | 居底展示 |
| `"top"` | 居顶展示 |
| `"center"` | 居中展示 |


### 示例代码

#### Demo

```tsx
import { home, openMiniWidget } from '@ray-js/ray'

// deviceId 为面板类 widget 的可选参数，取当前账号下第一台设备。
const { homeId } = await home.getCurrentHomeInfo();
const { devIds } = await home.getDeviceIdList({ ownerId: homeId, roomId: 80079606, devId: "vdevo178158139173829" });

const dialog = await openMiniWidget({
  appId: "ty8gpajcefnj0capj4",
  deviceId: devIds[0],
  pagePath: "/cards/alarm/index",
  position: "bottom",
  style: "1.3",
  versionType: "release",
  autoCache: false,
  autoDismiss: true,
  supportDark: true,
});

console.log(dialog);
```
