У меня есть этот код
const redirectToPayment = async () => {
const { data } = await useAsyncQuery(
createCheckoutMutation,
{ variantId: product.value.productByHandle.variants.edges[0].node.id}
);
window.location.href = data.value.checkoutCreate.checkout.webUrl;
}
Я получаю следующее предупреждение
[nuxt] [useAsyncData] Компонент уже смонтирован, вместо этого используйте $fetch. См. https://nuxt.com/docs/getting-started/data-fetching
Я искал и читал, и кажется, что решение здесь, но я не могу заставить его работать в моем примере. Может ли кто-нибудь мне помочь? Спасибо
Редактировать/обновить ответ @Connor Я попытался переместить запрос за пределы щелчка мыши (обработчик событий), но все равно получаю то же предупреждение.
const data = await $fecth(
createCheckoutMutation,
{ variantId: product.value.productByHandle.variants.edges[0].node.id}
);
useAsyncData
(и, как следствие, useAsyncQuery
) является составным, что означает, что его можно вызывать только на верхнем уровне функции настройки. Вы не можете вызвать его в обработчике событий.
При выполнении запросов в обработчике событий в Nuxt правильным подходом является $fetch
.
Подробнее о получении данных в Nuxt можно прочитать здесь.
Я не знаком с Nuxt Apollo, но вы, вероятно, захотите вызвать useApollo
в своей функции настройки, чтобы получить дескриптор клиента Apollo, и использовать этот клиент в своей функции-обработчике.
Если вы все еще получаете ту же ошибку, вы, вероятно, все еще используете useAsyncQuery
/useAsyncData
.
Спасибо, Коннор, я думаю, проблема может быть в мутации, я ее отлаживаю и ищу. Спасибо
Это была проблема с версией @nuxtjs/apollo, которую я использовал "alpha.14". Рабочая версия - "@nuxtjs/apollo": "5.0.0-alpha.5"
Я отредактировал и обновил свой вопрос, отвечая @Connor