异步功能无法执行

Noi*_*ivy 1 javascript reactjs react-native

retrieveData = async () => {
    try {
        //Retrieving values from AsyncStorage
        let voiture = await AsyncStorage.getItem('VOITURE')
        this.state.DBCarName=[];
        this.state.DBCarName = JSON.parse(voiture);
        alert(this.state.DBCarName)
    }
    catch {
        alert('error')
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数的调用:

render() {
                this.retrieveData();
Run Code Online (Sandbox Code Playgroud)

我想使用我的检索函数,以便为DBCarName状态分配一个值,以便在Text组件中呈现它。问题是,在render方法中调用函数时,它返回null,这可能意味着我的函数未执行且数组状态为空。

关于如何处理这个想法?

小智 7

发生这种情况是因为您试图重新分配组件的状态,而应该使用提供的this.setState函数。由于您使用的是AsyncStorage和this.state,因此我假设它是一个React Native项目,这里的代码应如下所示:

class YourComponentName extends React.Component {
  state = {
    DBCarName: []
  }

  retrieveData = async () => {
    try {
      //Retrieving values from AsyncStorage
      const voiture = await AsyncStorage.getItem('VOITURE')
      this.setState({ DBCarName: JSON.parse(voiture) })
    } catch (err) {
        console.log(err)
    }
  }

  render () {...}
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,应避免在OP进行操作时从render函数调用setState。参见/sf/ask/3375838791/ (5认同)