Могу ли я использовать функцию с async await внутри ComponentDidMount в React Native? - PullRequest
0 голосов
/ 10 ноября 2019

Я использую AsyncStorage.getItem в React Native.

Как только приложение загрузится, я хочу получить сохраненные данные в памяти устройства, используя AsyncStorage.getItem. Я думал об использовании ComponentDidMount(). Поэтому, как только компоненты загружены, я хочу автоматически запустить AsyncStorage.getItem и сохранить данные в массив DATA. Таким образом, пользователь не будет нажимать любую кнопку, чтобы начать рендеринг того, что сохранено в памяти устройства.

Я использовал приведенный ниже код, но я не вижу никаких действий console.log. Но console.log работает на других моих страницах, посвященных этой же программе. Кажется, ComponentDidMount() не был выполнен.

Спасибо!

 componentDidMount(){
    async () => { 
      try {
        const HomeData = await AsyncStorage.getItem('@MyApp_Homekey')
        return HomeData
      } catch (e) {
        console.log('There was error.')
      }

      if(!HomeData){
        console.log('There are no Dimmer Light saved in the memory.')
      }
      else {
        console.log('There is value in data after getItem.')
        this.setState(DATA = HomeData)
      }
    }

1 Ответ

0 голосов
/ 10 ноября 2019

Как отмечено в комментарии, вы должны использовать async для componentDidMount как: -


  componentDidMount = async () => {

    const HomeData = await AsyncStorage.getItem('@MyApp_Homekey')

    if(!HomeData){
      console.log('There are no Dimmer Light saved in the memory.')
    }
    else {
      console.log('There is value in data after getItem.')
      this.setState(DATA = HomeData)
    }
  }
...