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