---
name: "SmartGroupModel.onDpDataChange"
mode: "api"
versionRequirements:
  - { name: "@ray-js/panel-sdk", version: "1.5.0" }
---

## SmartGroupModel.onDpDataChange

> [VERSION] @ray-js/panel-sdk >= 1.5.0

> 💡 在群组设备环境中，原生 @ray-js/ray 的 onDpDataChange 实际上不会触发。
> 为了同时自动适配单设备和群组设备环境，这里会在底层 onGroupDpDataChangeEvent 触发时同步执行该回调。

### 描述

监听群组设备 DP 功能点变更事件

### 参数

`(listener: Function)`

| 参数 | 类型 | 必填 | 描述 |
| --- | --- | --- | --- |
| `listener` | `(data: GroupDpsChanged) => number` | 是 | 事件回调，接收包含 groupId、dps（变更的功能点 ID->值映射）等信息的参数 |

### 返回值

无


### 引用对象

##### `type` GroupDpsChanged

DP 变更事件回调参数（群组设备）

| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `groupId` | `string` | 群组 id |
| `dps` | `DpState` | 变化的功能点数据，key 为功能点 id，value 为功能点值 |

##### `type` DpState

功能点状态对象，key 为功能点 code，value 为功能点值

```typescript
export type DpState = Record<string, DpValue>;
```

##### `type` DpValue

功能点值类型，可能为 boolean、number、string

```typescript
export type DpValue = boolean | number | string;
```


### 示例代码

#### 示例

```typescript
const id = group.onDpDataChange((data) => {
  console.log('DP 变更:', data.dps);
});
// 需要时取消监听
group.offDpDataChange(id);
```
