componentDidMount()中的setState不能用于地理定位回调

时间:2016-07-11 08:33:11

标签: javascript android geolocation react-native state

我是反应原生的新手,我正在尝试使用地理位置来更新状态。

在componentDidMount()中,我可以调用this.setState({lat: 1});并且它可以工作。但是,如果我从geolocation.getCurrentPosition()回调中调用this.setState({lat: 1});,则应用程序崩溃。我正在测试物理设备。

我已经剥离了所有东西以隔离问题。非常感谢任何帮助。

这是我的代码:

 import React, { Component } from 'react';
 import { AppRegistry,ScrollView, ListView, Text, View } from 'react-native';

 class TestProject extends Component {
   constructor(props) {
      super(props);

      this.state = {
        lat: 0
      };
  }

   componentDidMount() {
      navigator.geolocation.getCurrentPosition(function(position) { 
        this.setState({lat: 1}); // this causes a crash - without this line the app does not crash.
      },
       (error) => alert(error.message)
     );

     this.setState({lat: 1}); // this works
  }

   render() {
     return (
       <View>
        <Text>
          {this.state.lat}
        </Text>
       </View>
     );
   }
 }

AppRegistry.registerComponent('TestProject', () => TestProject);

1 个答案:

答案 0 :(得分:-1)

感谢@Phil,我只需要设置self = this

let self = this; 
navigator.geolocation.getCurrentPosition(function(position) { self.setState({ lat: 1 }); }, (error) => alert(error.message) );