React Native:未定义不是对象-使用Expo Sensors / Barometer

问题描述

使用Expo文档中的示例代码在进行少量更改后会导致错误。当晴雨表在App启动时可以正常运行时,它会在更改或保存代码后导致类型错误

TypeError:未定义不是对象(正在评估“ _this_subscription”)

代码

import React,{ useState,useEffect } from 'react';
import { Text,TouchableOpacity,View,Platform } from 'react-native';
import { Barometer } from 'expo-sensors';

export default function App() {
  const [data,setData] = useState({});

  useEffect(() => {
    _toggle();
  },[]);

  useEffect(() => {
    return () => {
      _unsubscribe();
    };
  },[]);

  const _toggle = () => {
    if (this._subscription) {
      _unsubscribe();
    } else {
      _subscribe();
    }
  };

  const _subscribe = () => {
    this._subscription = Barometer.addListener(barometerData => {
      setData(barometerData);
    });
  };

  const _unsubscribe = () => {
    this._subscription && this._subscription.remove();
    this._subscription = null;
  };

  const { pressure = 0,relativeAltitude = 0 } = data;

  return (
    <View style={styles.sensor}>
      <Text>Barometer:</Text>
      <Text>Pressure: {pressure * 100} Pa</Text>
      <Text>
        Relative Altitude:{' '}
        {Platform.OS === 'ios' ? `${relativeAltitude} m` : `Only available on iOS`}
      </Text>
      <View style={styles.buttonContainer}>
        <TouchableOpacity onPress={_toggle} style={styles.button}>
          <Text>Toggle</Text>
        </TouchableOpacity>
      </View>
    </View>
  );
}

来源:世博会文档https://docs.expo.io/versions/latest/sdk/barometer/

感谢您的帮助:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)