Nuxt3 по умолчанию использует SSR первого экрана, который отображается сервером. Вы можете отменить рендеринг на стороне сервера, настроив ssr:false.
nuxt.config.ts
export default defineNuxtConfig({
devtools: { enabled: true },
// ssr:false, //Все страницы отображаются для клиента
routerRules:{ // Укажите страницу маршрутизации, которая будет отображаться для клиента.
'/home': {
ssr:false
}
}
})
По словам Вью жизненный цикл, только setup beforeCreate Created
**Содержимое будет выполнено на стороне сервера.,Итак, если это первый рендеринг экрана сервера,Метод сбора данных должен быть прописан в этих жизненных циклах**
Nuxt3 упакованный$fetch
метод сделатьзапрос данных,Нет необходимости представлять третьих лицaxios
илиfetch
Делатьзапрос данных, могут возникнуть проблемы с путаницей данных при множественных запросах.
Следующие ситуации — это все запросы, которые не требуют междоменных запросов, и сервер и клиент могут запрашивать контент без какой-либо другой настройки прокси.
useAsyncData нужно объединить $fetch
использовать и Передайте уникальное значение ключа, чтобы избежать путаницы при запросе слишком большого количества данных. По умолчанию значение Lazy равно false. , который будет блокировать переходы по маршрутизации при переходе с других страниц. То есть: маршрут нужно переключать после выполнения запроса.
По умолчанию для параметра useLazyAsyncData установлено значение true, и дополнительная настройка не требуется.
<template>
<div>
<div v-for="item of list" :key="item.name">
{{ item.name }}
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const list = ref([])
const { data } = await useAsyncData(
'id', // Необходимо ввести уникальный идентификатор
() =>
$fetch('https://xxx.xxx.com', {
headers: {
...
}
}),
{
pick: ['data'], // Выберите нужные свойства в возвращаемом объекте
// lazy: false, // По умолчанию здесь установлено значение false Блокирует отрисовку маршрута (необходимо дождаться запроса Маршрут будет перенаправлен после возвращения данных)
lazy: true // Это не будет блокировать переходы по маршруту, но после перехода данные будут отсутствовать. Вам необходимо отслеживать данные с помощью наблюдения, а затем присваивать значение.
}
)
// Его нельзя удалить, иначе при загрузке первого экрана будет выдано сообщение об ошибке.
list.value = data.value
watch(data, () => {
list.value = data.value
})
</script>
Полученные здесь данные начинаются с пустого массива. После запроса данных содержимое присваивается. Использование lazy приведет к отсутствию данных в начале. При входе на страницу для запроса данных они не будут загружены. watch, чтобы отслеживать возвращаемый контент и назначать значение при его изменении.
Вы также можете напрямую деконструировать полученный контент, не выполняя обработку присваивания, и использовать его для рендеринга страниц, поэтому нет необходимости отслеживать.
<template>
<div>
<div v-for="item of data" :key="item.name">
{{ item.name }}
</div>
</div>
</template>
<script setup lang="ts">
const { data } = await useAsyncData(
'id', // Необходимо ввести уникальный идентификатор
() =>
$fetch('https://xxx.xxx.com', {
headers: {
...
}
}),
{
pick: ['data'], // Выберите нужные свойства в возвращаемом объекте
// lazy: false, // По умолчанию здесь установлено значение false Блокирует отрисовку маршрута (необходимо дождаться запроса Маршрут будет перенаправлен после возвращения данных)
lazy: true // Это не будет блокировать переходы по маршруту, но после перехода данные будут отсутствовать. Вам необходимо отслеживать данные с помощью наблюдения, а затем присваивать значение.
}
)
</script>
Эквивалент использованияAsyncData. Синтаксический сахар,Нет необходимости писать$fetch
Нет необходимости передавать уникальныеid
useLaztFetch по умолчанию устанавливает для lazy значение true.
Писать относительно просто
const { data } = await useFetch(
'https://xxx.xxx.com',
{
headers: {
...
},
transform: (res: any) => res.data.films, // Если возвращенного контента слишком много, вы можете отфильтровать его. Желаемый возвращаемый контент
// lazy: false, // По умолчанию здесь установлено значение false Блокирует отрисовку маршрута (необходимо дождаться запроса Маршрут будет перенаправлен после возвращения данных)
lazy: true // Это не будет блокировать переходы по маршруту, но после перехода данные будут отсутствовать. Вам необходимо отслеживать данные с помощью наблюдения, а затем присваивать значение.
}
)
</script>