关于未安装组件的警告

时间:2019-11-21 14:44:28

标签: javascript react-native

我有一个应用程序,它从外部设备读取值,然后将这些值写入数据库。 当我在数据库中写入此数据时,出现以下错误:

  

无法在已卸载的组件上执行React状态更新。这是   无操作,但表示您的应用程序内存泄漏。修理,   取消所有订阅和异步任务   componentWillUnmount方法。

关于此代码:

this.setState(state => ({
          acc_dx,
          array_acc_dx: [...state.array_acc_dx, [timeagm, ...acc_dx].join(":")]
        }));

此代码是函数 setupNotifications1 的一部分,该函数又在componentDidMount()中调用的函数中被调用。

如何解决此警告?谢谢。

编辑1:

componentDidMount() {
    this.deviceService1(this.device1);
  }

deviceService1()内部,我打电话给this.deviceService2(this.device2),在内部,我打电话给setupNotifications1(this.device1)setupNotifications2(this.device2)

编辑2:

async setupNotifications1(device) {
    var timeagm = 0;
    var time = 0;
    const service = this.serviceGeneral();


    this.subscriptionMonitor1 = await device.monitorCharacteristicForService(
      service,
      this.AccGyrMg,
      (error, characteristic) => {
        if (error) {
          this.error(error.message);
          return;
        }

        const buf = Buffer.from(characteristic.value, "base64");
        const [...acc_dx] = [2, 4, 6].map(index => buf.readInt16LE(index));
        this.setState(state => ({
          acc_dx,
          array_acc_dx: [...state.array_acc_dx, [timeagm, ...acc_dx].join(":")]
        }));
        timeagm += 20;

然后我有一个停止按钮,用于删除this.subscriptionMonitor1并更改页面(我将值传递到了DB中已写入的另一页面中)

0 个答案:

没有答案