@oexlkinq

Почему вызов функции на компоненте срабатывает только со второго раза?

Есть асинхронный 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. При последующих уже нормально. В чем может быть проблема?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@oexlkinq Автор вопроса
https://github.com/vuejs/core/issues/7346

p.s. я поправил у себя код так, чтобы defineExpose вызывалась до первого await (как и предлагают в одном из комментов ишью на гитхабе)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы