在 React Native 中检查 Internet 可用性的可重用代码中的问题

Problem in reusable code to check internet availability in react native

我做了一个检查互联网可用性的功能。每当我调用此函数时,无论互联网是打开还是关闭,它都会给我真实的信息。我想要一个包含检查互联网的代码的函数,我可以在从互联网获取数据之前调用它。我的代码在下面。

const [campusList, setCampusList]= React.useState([{label:'Select Campus', value:'select campus'}]);

const isConnected =()=>{
        NetInfo.fetch().then(state => {
        console.log("Connection type", state.type);
        console.log("Is connected?", state.isConnected);
        if(state.isConnected)
            return true;
        else
        return false;

        });
    }


const loadCampuses = async()=>{
        if(isConnected)
        {
           await fetch(url)
            .then((respons)=>respons.json())
            .then((jsonResponse)=>{
                    jsonResponse.map((data)=>
                    setCampusList(campusList=> [...campusList, {label:data.Text, value:data.Value}])
                   );
            })
            .catch((error)=>console.log(error))
               //.finally(()=>setLoading(false))
        }
    }

哦,对了,这是一个承诺,而不只是一个直接的return。你需要等待它。您不需要单独的功能:

    if(await NetInfo.fetch().isConnected)

获取 Returns 解析为 NetInfoState 对象的 Promise。你需要等待 promise 来解决

试试这个

const isConnected = sendRequest => {
  NetInfo.fetch().then(state => {
    if (state.isConnected) {
      sendRequest();
    }
  });
};

const loadCampuses = () => {
  isConnected(async () => {
    await fetch(url)
      .then(respons => respons.json())
      .then(jsonResponse => {
        jsonResponse.map(data =>
          setCampusList(campusList => [
            ...campusList,
            { label: data.Text, value: data.Value },
          ]),
        );
      })
      .catch(error => console.log(error));
  });
};