Пользовательский объект пуст в приложении, даже если он возвращается с внутреннего сервера

Вот _onPress в моем родном приложении. Цель этой функции — получить пользовательский объект и передать его следующему компоненту после того, как пользователь щелкнет элемент. async/await используется для поиска базы данных в _getUser. Я вижу объект пользователя на сервере, но myself ничего не получает и пуст. Я не уверен, почему myself пуст. Следует ли вместо этого вызывать _getUser в конструкторе?

async _onPress(id) {
      let myself = await _getUser();
      if (!myself) console.info("_getUser return nothing in Chat!"); 
      this.props.navigation.navigate("Chat", {eventId: id, user: myself});
    }

не должен заставить пользователя быть this. _getUser () ? может быть, именно поэтому ваш сам всегда пуст, и вы можете подтвердить, почему его окружают попыткой поймать и распечатать ошибку

warl0ck 08.04.2019 09:13
this не получилось. Я пробовал перед публикацией, и это вызвало ошибку.
user938363 08.04.2019 19:03

Вероятно, _getUser() должен войти в componentDidMount с user как state.

user938363 08.04.2019 19:05

Вы можете сказать, откуда вы вызываете эту функцию _onPress? если вы напрямую звоните из onPress какой-то строки TouchableOpacity и _getUser() обещание, я предлагаю вам использовать подход .then()

warl0ck 09.04.2019 11:00

Я переместил getUser() в componentDidMount как асинхронный и присвоил res состоянию.

user938363 09.04.2019 19:14
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
0
5
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку _getUser() возвращает обещание и, вероятно, _onPress вызывается непосредственно из ToucableOpacity или какой-либо сенсорной кнопки, вы можете разрешить обещание, а затем предпринять необходимые действия, например:

_onPress(id) {
  _getUser()
    .then((data) => {
      if (!data) {
        console.info("_getUser return nothing in Chat!");
        return
      }
      this.props.navigation.navigate("Chat", { eventId: id, user: data });
    })
    .catch(err => { console.info(err) })
}

Я переместил getUser() в componentDidMount как асинхронный и присвоил res состоянию.

user938363 09.04.2019 19:14

Другие вопросы по теме