React Native 设置函数调用流程

我写了这段代码


componentDidMount(){

    

    Geolocation.getCurrentPosition(info => {

        console.log(info.coords.latitude + "    " + info.coords.longitude)

        this.setState({coords: {latitude: info.coords.latitude, longitude: info.coords.longitude, latitudeDelta: this.LATITUDE_DELTA, longitudeDelta: this.LONGITUDE_DELTA}})

    }, error => Alert.alert('Error', JSON.stringify(error)),

    {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000});

      

    console.log(this.state.coords.latitude + "    " + this.state.coords.longitude);


    region = getapi(this.state.coords.latitude, this.state.coords.longitude)

    this.setState({region})

    console.log("TEMP: " + region);

    hot = getHotBarb(this.state.region)

    this.setState({hot})

    rated = getRatedBarb(this.state.region)

    this.setState({rated})

    offer = getOfferBarb(this.state.region)

    this.setState({offer})


    this.setState({loading: false})


}

但在日志控制台上,我首先看到 this.state.coords.latitude + " " + this.state.coords.longitude (未定义)的日志和 getCurrentPosition 调用内的日志(正确的)。问题是我无法调用函数 getapi 因为 this.state.coords.latitude, this.state.coords.longitude 结果未定义 我需要先设置this.state.coords.latitude然后this.state.coords.longitude调用 中的其他函数componentDidMount()。


如何在其他函数之前调用 getCurrentPosition 函数上的 setState?


蓝山帝景
浏览 68回答 1
1回答

慕的地10843

试试这个方法callApi(){    console.log(this.state.coords.latitude + "    " + this.state.coords.longitude);    region = getapi(this.state.coords.latitude, this.state.coords.longitude)    this.setState({region})    console.log("TEMP: " + region);    hot = getHotBarb(this.state.region)    this.setState({hot})    rated = getRatedBarb(this.state.region)    this.setState({rated})    offer = getOfferBarb(this.state.region)    this.setState({offer})    this.setState({loading: false})}getCurrentPosition(){    Geolocation.getCurrentPosition(info => {        console.log(info.coords.latitude + "    " + info.coords.longitude);        this.setState({coords: {latitude: info.coords.latitude, longitude: info.coords.longitude, latitudeDelta: this.LATITUDE_DELTA, longitudeDelta: this.LONGITUDE_DELTA}},    () => this.callApi();  // call api here    )    }, error => Alert.alert('Error', JSON.stringify(error)),    {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000});}componentDidMount(){        this.getCurrentPosition();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript