У меня есть функция InternetStatus(), как показано ниже. Я вызываю эту функцию в render() через console.info, но она все равно показывает undefined? Как это исправить? Спасибо!
function InternetStatus() {
NetInfo.fetch().then(state => {
console.info("Connection type", state.type);
console.info("Is connected?", state.isConnected);
return (state.isConnected)
});
}
render() {
console.info(InternetStatus())
return (
<View>
<Text>
hello
</Text>
</View>
);
}
}
NetInfo.fetch()
— это асинхронная функция, что означает, что функция InternetStatus
возобновит выполнение, и в приведенном выше коде она ничего не возвращает, поэтому вы получаете неопределенность. Один из способов справиться — связать обещания.
function InternetStatus() {
return NetInfo.fetch().then(state => {
console.info("Connection type", state.type);
console.info("Is connected?", state.isConnected);
return (state.isConnected)
});
}
render() {
InternetStatus().then(result => {
console.info(result)
})
return (
<View>
<Text>
hello
</Text>
</View>
);
}
}
Если вы хотите использовать ответ API в пользовательском интерфейсе, вам необходимо принудительно изменить состояние.
Извините, я новичок в этом.
Нет, ты не можешь. Каждая асинхронная функция должна выполняться с .then()
Вы можете изучить async/await
, если хотите более чистый код.
Большое спасибо, я установил состояние для обработки результата. У меня это сработало :)
Спасибо за ваш ответ! Это сработало для меня! У меня есть дополнительные вопросы, могу ли я использовать это в if ()? как показано ниже
if (InternetStatus()) if (!InternetStatus())
Как я могу получить результат?