ray开发面板小程序如何监听dp点上报事件

小程序开发相关产品技术讨论,包括面板、智能小程序、React Native、Ray跨端框架、Panel SDK、微信小程序、小程序开发工具(IDE)及其他开发技术相关等话题


Post Reply
xww
Posts: 52

ray开发面板小程序如何监听dp点上报事件,有个需求是当某个dp点上报了数据之后,再执行操作。请问如何获得上报的dp点数据(该dp点上报的数据可能始终是一样的数据)

xuanyi
Posts: 95
Location: 涂鸦玄一

Re: ray开发面板小程序如何监听dp点上报事件

我们提供了面板小程序中 api 文档,可以参照 https://developer.tuya.com/cn/miniapp/p ... ata-change

类组件示例:

Code: Select all

import React from 'react';
import { onDpDataChange, offDpDataChange, registerDeviceListListener } from '@ray-js/api';
export default class Demo extends React.Component {
  componentDidMount() {
     // 如果在 app.tsx 中已经调用过 initPanelEnvironment 方法,下面一行可以不用。如果没有调用initPanelEnvironment,则需要先调用 registerDeviceListListener
     // registerDeviceListListener({deviceIdList:[deviceId]})
    onDpDataChange(this.handleOnDpDataChange);
  }
  handleOnDpDataChange = (data) => {
    const { deviceId } = data;
    if (deviceId === currentDeviceId) {

}
  }
  componentWillUnmount(){
    offDpDataChange(this.handleOnDpDataChange)
  }
  render() {
    ...
  }
}

函数组件示例:

Code: Select all

import { onDpDataChange, offDpDataChange, registerDeviceListListener } from '@ray-js/api';
import React from 'react';

export default function Demo() {
  const handleDpDataChange: DpDataChangeHandler = data => {
    console.log('=== onDpDataChange', data);
  };

  React.useEffect(() => {
    // 如果在 app.tsx 中已经调用过 initPanelEnvironment 方法,下面一行可以不用。如果没有调用initPanelEnvironment,则需要先调用 registerDeviceListListener
    registerDeviceListListener({deviceIdList: [deviceId]});
    onDpDataChange(handleDpDataChange);
    return () => {
      offDpDataChange(handleDpDataChange);
    };
  }, []);
}

Post Reply