computed обращается к null до загрузки; load не обрабатывает ошибки, а изменение userId и SSR-гидратация не учтены.
export function useUserData(userId) {
computed обращается к null до загрузки; load не обрабатывает ошибки, а изменение userId и SSR-гидратация не учтены.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
export function useUserData(userId) { const { $api } = useNuxtApp()
const user = ref(null) const isLoading = ref(true)
const displayName = computed(() => {
return ${user.value.firstName} ${user.value.lastName}
})
async function load() {
const data = await $api.get(/users/${userId})
user.value = data
isLoading.value = false
}
load() return { user, isLoading, displayName } }
Ответ
computed обращается к null до загрузки; load не обрабатывает ошибки, а изменение userId и SSR-гидратация не учтены.
Защитите displayName проверкой наличия user. loading должен сбрасываться в finally, ошибка — сохраняться для UI. Для реактивного userId нужен watch или реактивный ключ с защитой от гонок. В Nuxt используйте подходящий SSR-aware useAsyncData/useFetch вокруг API-контракта; прямой вызов load может повторяться на сервере и клиенте. Формат результата $api.get сначала уточните.
Источник: nuxt.com.