我有一个如下所示的InternetStatus()函数。我通过console.log在render()中调用此函数,但它仍显示未定义?我如何解决它?谢谢!
function InternetStatus() {
NetInfo.fetch().then(state => {
console.log("Connection type", state.type);
console.log("Is connected?", state.isConnected);
return (state.isConnected)
});
}
render() {
console.log(InternetStatus())
return (
<View>
<Text>
hello
</Text>
</View>
);
}
}
答案 0 :(得分:1)
NetInfo.fetch()
是一个异步函数,这意味着InternetStatus
函数将继续执行,并且在上面的代码中它不返回任何内容,因此您将无法定义。处理承诺的一种方法是兑现承诺。
function InternetStatus() {
return NetInfo.fetch().then(state => {
console.log("Connection type", state.type);
console.log("Is connected?", state.isConnected);
return (state.isConnected)
});
}
render() {
InternetStatus().then(result => {
console.log(result)
})
return (
<View>
<Text>
hello
</Text>
</View>
);
}
}
如果您打算在UI上使用api响应,则需要强制更改状态。