如何仅向ReactNative数组添加新项

qkf9rpyu  于 2022-11-25  发布在  React
关注(0)|答案(1)|浏览(126)

我正在ReactNative应用中使用蓝牙。我正在尝试为发现的设备创建UI。为了使用BT,我使用库react-native-ble-plx和方法:

startDeviceScan(
      UUIDs: UUID[] | null,
      options: ScanOptions | null,
      listener: (error: BleError | null, scannedDevice: Device | null) => void
    ): void

我使用数组方式是:

export default class App extends Component {
  state = {
    devices: [],
  };
....

}

和向设备阵列添加项目:

BleManager.startDeviceScan(
          null,
          {
            allowDuplicates: false,
          },
          async (error, device) => {
            if (error) {
              console.log(error.reason);
              _BleManager.stopDeviceScan();
            }
            if (device.localName != null) {
              if (!this.state.devices.includes(device)) {
                this.state.devices.push(device);
              }
            }
          },
        );

但是在这里我发现我的检查includes不起作用,检查项目是否在数组中也没有帮助。我如何才能检查数组中是否已经有一些项目,或者可以用另一种方法来完成?

soat7uwm

soat7uwm1#

device是对象,devices是对象的数组,不能用includes方法检查devices数组中是否包含设备对象,可以用下面的函数检查。

const isDeviceInclude = (device) => {
  if (this.state.devices.filter(e => e.id === device.id).length > 0) {
    return true;
  }
  else {
    return false;
  }
}

相关问题