Вот _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() должен войти в componentDidMount с user
как state
.
Вы можете сказать, откуда вы вызываете эту функцию _onPress
? если вы напрямую звоните из onPress какой-то строки TouchableOpacity
и _getUser()
обещание, я предлагаю вам использовать подход .then()
Я переместил getUser()
в componentDidMount как асинхронный и присвоил res состоянию.
Поскольку _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 состоянию.
не должен заставить пользователя быть
this. _getUser ()
? может быть, именно поэтому ваш сам всегда пуст, и вы можете подтвердить, почему его окружают попыткой поймать и распечатать ошибку