如何返回此状态

时间:2019-05-29 02:19:06

标签: reactjs react-native

我有一个如下所示的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>
      );
  }
}

1 个答案:

答案 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响应,则需要强制更改状态。