I have a component which renders a spinner via <Suspense />
. When this component mounts, a fetchQuery
request is triggered via the useEffect
hook like so:
const VisualComponent = () => {
...
const [foo, setFoo] = useState(null);
useEffect(() => {
const fetchFoo = async () => {
await getFoo().then((someBoolean) => {
if (someBoolean && someOtherCondition) {
setFoo(true);
}
});
}
fetchFoo();
});
return(<Suspense fallback={SomeLoader} />...</Suspense>)
};
and getFoo()
calls fetchQuery
:
const getFoo = async () => {
let result;
await fetchQuery(...)
.then((data) => {
result = data;
});
return result;
};
For some reason, Suspense only shows loader when getFoo
is fired via fetchFoo
and stops showing the loader without waiting for fetchFoo
to finish.
How can I make Suspense wait for fetchFoo
to finish?