I have a button that sends a prefetch request using graphQL Apollo Client when a user hovers it.
The issue is the onClick event is blocked for a few ms. Can someone please explain why seperate events are clashing like this. I can't think of any reason why my onclick event is not firing while the request is in flight as its asynchronous.
<div
role="button"
key={shortId()}
onMouseEnter={prefetch(value.value)}
onClick={onToggle(id, value.value)}
className="FilterGroup__item"
>
{renderWidget({value, selected})}
<span className="FilterGroup__item__count">{value.count}</span>
</div>
The function returned by prefetch is:
const [searchPrefetch] = useLazyQuery(searchQuery, {
returnPartialData: true
});
const sendSearchPrefetch = (additionalParameters?: IAdditionalSearchParameters) => {
searchPrefetch({
variables: getRequestParameters(additionalParameters)
});
};
const handlePrefetch = useCallback(
debounce(async (additionalFacets?: IAdditionalSearchParameters) => {
sendSearchPrefetch(additionalFacets);
}, SEARCH_DEBOUNCE_TIMER_MS),
[]
);
const prefetch = (filter: string) => (value: string) => () => {
handlePrefetch({filters: {[filter]: value}});
};