如何在react-native中向传感器添加侦听器?

时间:2016-11-29 09:17:33

标签: react-native android-sensors react-native-android sensormanager

我即将完成反应原生开发的第一步,而且我在访问设备的传感器方面遇到了问题。在我的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"})')

我通过加载

将sensormanager集成到我的项目中
npm i react-native-sensor-manager --save

在控制台中,因此实际上应该识别包。

你知道这个问题是什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

addListener方法为回调函数添加了另一个上下文。你可以用

var that = this;
DeviceEventEmitter.addListener('Accelerometer', function (data) {
  that.setState({ titleText: "ttt" })
});

DeviceEventEmitter.addListener('Accelerometer', function (data) {
  this.setState({ titleText: "ttt" })
}.bind(this));