如何在 react-native 中将侦听器添加到传感器?
How to add a listener to a sensor in react-native?
我即将开始我的反应本机开发的第一步,但我在访问设备的传感器时遇到了问题。在我的 index.android.js 中,我正在做
import {
DeviceEventEmitter
} from 'react-native';
import { SensorManager } from 'NativeModules';
var mSensorManager = require('NativeModules').SensorManager;
export default class PropertyFinder extends Component {
constructor(props) {
super(props);
this.state = {
titleText: "Bird's Nest"
};
mSensorManager.startAccelerometer(100);
DeviceEventEmitter.addListener('Accelerometer', function (data) {
this.setState({ titleText: "ttt" })
});
}
render() {...
...
当 运行 模拟器上的应用
时,我确实收到错误消息
undefined is not a function (evaluating 'this.setState({titleText:"ttt"})')
我确实通过加载将传感器管理器集成到我的项目中
npm i react-native-sensor-manager --save
在控制台中,所以包实际上应该被识别。
您知道问题出在哪里吗?
谢谢!
addListener
方法向回调函数添加另一个上下文。你可以使用
var that = this;
DeviceEventEmitter.addListener('Accelerometer', function (data) {
that.setState({ titleText: "ttt" })
});
或
DeviceEventEmitter.addListener('Accelerometer', function (data) {
this.setState({ titleText: "ttt" })
}.bind(this));
我即将开始我的反应本机开发的第一步,但我在访问设备的传感器时遇到了问题。在我的 index.android.js 中,我正在做
import {
DeviceEventEmitter
} from 'react-native';
import { SensorManager } from 'NativeModules';
var mSensorManager = require('NativeModules').SensorManager;
export default class PropertyFinder extends Component {
constructor(props) {
super(props);
this.state = {
titleText: "Bird's Nest"
};
mSensorManager.startAccelerometer(100);
DeviceEventEmitter.addListener('Accelerometer', function (data) {
this.setState({ titleText: "ttt" })
});
}
render() {...
...
当 运行 模拟器上的应用
时,我确实收到错误消息undefined is not a function (evaluating 'this.setState({titleText:"ttt"})')
我确实通过加载将传感器管理器集成到我的项目中
npm i react-native-sensor-manager --save
在控制台中,所以包实际上应该被识别。
您知道问题出在哪里吗?
谢谢!
addListener
方法向回调函数添加另一个上下文。你可以使用
var that = this;
DeviceEventEmitter.addListener('Accelerometer', function (data) {
that.setState({ titleText: "ttt" })
});
或
DeviceEventEmitter.addListener('Accelerometer', function (data) {
this.setState({ titleText: "ttt" })
}.bind(this));