问题描述
使用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 (将#修改为@)