Есть асинхронный SFC компонент. В нем в константе лежит функция. Доступной для родителя я делаю её через defineExpose.
const fetcher = (date: string, week: boolean) => {
/* ... */
return /* Promise */;
};
defineExpose({
fetcher,
});
В родителе компонент рендерится через component is. Т.к. асинхронный, обернут в Suspense (+ обернут в KeepAlive, т.к. это один из нескольких похожих компонентов).
<KeepAlive>
<Suspense @resolve="onCpResolve">
<component :is="cps[currentCpIndex].component" ref="cp"/>
<template #fallback>
<div class="center-children">
<span class="spinner-border"></span>
</div>
</template>
</Suspense>
</KeepAlive>
Вызвать эту функцию я пытаюсь через свойства соответствующего рефа - cp.value.fetcher(...)
Это всегда происходит после того как Suspense вызовет событие @resolve (кодом это событие не обрабатывается, но функцию я вызываю после того, как в консоли появится лог о вызванном событии)
При первом вызове функции, её значение - undefined. При последующих уже нормально. В чем может быть проблема?