async setup/await или так и останется костыль в виде кодогенерации в <script setup>?
а что там нужно чинить? между async setup и script setup + top-level await нет никакой разницы
Так после await в setup все ломается (ну почти все)
https://github.com/vuejs/rfcs/discussions/234 https://antfu.me/posts/async-with-composition-api
правильно, потому что async setup работает только с экспериментальной фичей - Suspense просто разница в том, что в script setup async выставляется только при наличии top-level await, но если ты его там укажешь, то все точно так же сломается без наличия Suspense
suspense это не про то
после await "теряется" инстанс компонента
я выше ссылки скинул и там дискуссия в гите подробно описывает проблему
попробуйте сделать нечто такое export default { setup: async (props, ctx) => { const vm = getCurrentInstance() console.log(vm) // тут все ок, в консоле будет объект инстанса компонента await someAsyncFunc() const vm2 = getCurrentInstance() console.log(vm2) // тут будет null } }
ага, вижу, ну я бы порекомендовал вообще не использовать async setup, пока Suspense не выйдет из эксперименталки, а заодно с ним могут допилить и поведение async setup всегда можно делать запросы в async onMounted, лично я так и делаю, поэтому с этой проблемой никогда не сталкивался
onMounted не работает на сервере, а данные нужно получить
тогда только script setup остается
Это то да. Вопрос был в том планируют ли сделать "нормально" без костылей или все так и останется
вряд ли, в ишью есть же коммент от Эвана, где он рекомендует просто использовать этот вариант >In non-compiled async setup() it's simpler to just make sure to use all composition API calls before the first await.
Обсуждают сегодня