У меня проблема с async
вызовами и моим пользовательским перехватом в React.
Мне нужно вызвать серию выборок с одного и того же пользовательского хука, но это не относится к цепочке ожидания.
У меня есть несколько кнопок, которые работают onClick
, например:
buttonDelete={() => deleteAssignedOpp(opportunity.id)}
async function deleteAssignedOpp(id) {
await doFetch(`/opportuniy/assigned/${id}`, "DELETE");
await doFetch("/opportuniy/assigned/list", "GET", "IN_PROGRESS");
}
Эти кнопки вызывают пользовательский хук, например:
(я получил этот код из онлайн-уроков)
function useFetch() {
const [url, setUrl] = useState("");
const [obj, setObj] = useState("");
const [method, setMethod] = useState("GET");
const [body, setBody] = useState();
const [state, dispatch] = useStateValue();
useEffect(() => {
let didCancel = false;
if (url) {
const fetchData = async () => {
dispatch({
type: `FETCH_${obj}_INIT`
});
try {
const response = await fetch(
`https://myapiAddress${url}`,
{
method: method,
//body: body,
headers: new Headers({
Authorization: myFunctionForAuthorization
})
}
);
const result = await response.json();
if (!didCancel) {
dispatch({
type: `FETCH_${obj}_SUCCESS`,
payload: result
});
}
} catch (error) {
if (!didCancel) {
dispatch({
type: `FETCH_${obj}_ERROR`,
payload: { error }
});
}
}
};
fetchData();
return () => {
didCancel = true;
};
}
}, [method, body]);
const doFetch = (url, method, obj, body = "") => {
setUrl(url);
setObj(obj);
setMethod(method);
setBody(body);
};
return [doFetch];
}
export default useFetch;
Я ожидаю, что пользовательский хук будет вызываться в том же порядке, что и функция кнопки async/await
.
Большое спасибо.