Axios请求在react中处理http请求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axios请求在react中处理http请求相关的知识,希望对你有一定的参考价值。
Axios请求在反应中
这里是我的自定义钩子,但我没有得到如何附加spinner,而等待响应我添加加载,并将其设置为true,进一步我是值得注意解决它。
const useHttpReqHandler = () => {
const [result, setResult] = useState();
const [loading, setLoading] = useState(true);
const apiMethod = async ({url , data , method}) => {
let options = {
method,
url,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
data
};
let response = await axios(options);
const UpdatedData = await response.data;
console.log(UpdatedData)
setResult(UpdatedData);
setLoading(false)
}
return [result , apiMethod];
};
我在另一个组件下调用这个自定义钩子。
但我怎么能在等待响应的时候添加Sppiner呢?
答案
const useHttpReqHandler = () => {
const [result, setResult] = useState();
const [loading, setLoading] = useState(false);
const apiMethod = useCallback(async ({url , data , method}) => {
let options = {
method,
url,
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json;charset=UTF-8'
},
data
};
setLoading(true);
try {
let response = await axios(options);
const UpdatedData = await response.data;
setResult(UpdatedData);
setLoading(false);
} catch (e) {
console.error(e)
setLoading(false);
}
}, [setLoading, setResult])
return [loading, result , apiMethod];
};
然后显示一个微调器在你的组件,而 loading
是 true
.
未经测试,可能无法使用,但你可能会得到这个想法。
const MyComponent = () => {
const [loading, apiResult, apiMethod] = useHttpReqHandler();
const captchValidation = useCallback(() => {
const x = result.toString();
const y = inputValue.toString();
apiMethod({url: 'your url', data: {"email": email}, method: 'post'})
if (x === y) {
console.log("Entered here in api part")
if(apiResult){
alert("success")
}
}
else {
alert("fail")
}
}, [apiMethod, apiResult])
return (
<>
{
loading ? (<Spinner />) : (<button onClick={captchValidation}></button>)
}
</>
)
}
以上是关于Axios请求在react中处理http请求的主要内容,如果未能解决你的问题,请参考以下文章
Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”