首页 > 解决方案 > 如何返回此状态

问题描述

我有一个函数 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>
      );
  }
}

标签: reactjsreact-native

解决方案


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 响应,那么您需要强制更改状态。


推荐阅读