【发布时间】:2020-08-04 09:07:17
【问题描述】:
我试图通过简单地调用 useCustomHooks 来创建一个自定义 Hooks 来处理来自任何组件的输入 HTTP 请求,但是它失败并且错误是
不能在异步函数之外使用关键字 'await'
我所做的只是一个触发http请求自定义组件方法的处理程序
import { useState } from 'react';
import axios from "axios";
const useHttpReqHandler = () => {
const [result, setResult] = useState();
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);
}
return [result, apiMethod];
};
export default useHttpReqHandler;
现在我可以在我的代码和任何事件处理程序上使用这个钩子,只需像这样调用从钩子返回的 callAPI
const MyFunc = () => {
const [apiResult, apiMethod] = useHttpReqHandler();
const captchValidation = () => {
const x = result.toString();;
const y = inputValue.toString();;
if ( x === y) {
apiMethod({url: 'some url here', data: {"email": email}, method: 'post'});
alert("success")
}
else {
alert("fail")
}
}
这是一个正确的方法吗?因为我是 Reactjs 的初学者
【问题讨论】:
-
你在
useEffect内部调用await,但useEffect不是异步的 -
嗨@HermitCrab这是一个正确的方法吗?我对我的帖子进行了编辑,但会运行无限次
-
你的自定义钩子有很多错误,如果你愿意,我可以处理它并发布一个工作版本
-
嗨@HermitCrab,如果可以的话,谢谢,如果你能为我做这件事,因为我只从过去两周开始做出反应
-
嗨@HermitCrab,如果你能指导我,它将非常有帮助
标签: reactjs