如何在 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));