调用this.setState(); inside componentDidMount返回“无法读取未定义的属性'setState'”

时间:2017-11-02 12:16:20

标签: javascript reactjs

我正在构建一个谷歌地图组件,我正在尝试将用户的lng和lat设置为状态。

position.coords.latitudeposition.coords.longitude会记录正确的坐标,但当我尝试将它们设置为状态时,我会在标题中收到错误。

constructor(props) {
        super(props);

        this.state = {
            userLatitude: 0,
            userLongitude: 0
        }
    }

componentDidMount() {
        navigator.geolocation.getCurrentPosition(function(position) {
            console.log(position.coords.latitude + " " + position.coords.longitude);

            this.setState({userLatitude: position.coords.latitude});
            this.setState({userLongitude: position.coords.longitude});
        });
    }

1 个答案:

答案 0 :(得分:0)

你需要bind getCurrentPosition因为它里面没有引用React组件的上下文,因此setState不可用

此外,您应该在一个语句中执行此操作,而不是使用两个setState语句,否则您的组件将重新呈现两次

navigator.geolocation.getCurrentPosition((position) => {
        console.log(position.coords.latitude + " " + position.coords.longitude);

        this.setState({userLatitude: position.coords.latitude, userLongitude: position.coords.longitude});
    });