Запрос данных Nuxt3 useAsyncData/useFetch
Запрос данных Nuxt3 useAsyncData/useFetch

Настройка SSR

Nuxt3 по умолчанию использует SSR первого экрана, который отображается сервером. Вы можете отменить рендеринг на стороне сервера, настроив ssr:false.

nuxt.config.ts

Язык кода:txt
копировать
export default defineNuxtConfig({
  devtools: { enabled: true },
 // ssr:false, //Все страницы отображаются для клиента
  routerRules:{ // Укажите страницу маршрутизации, которая будет отображаться для клиента.
      '/home': {
          ssr:false
      }
  }
})

запрос данных

По словам Вью жизненный цикл, только setup beforeCreate Created**Содержимое будет выполнено на стороне сервера.,Итак, если это первый рендеринг экрана сервера,Метод сбора данных должен быть прописан в этих жизненных циклах**

Nuxt3 упакованный$fetchметод сделатьзапрос данных,Нет необходимости представлять третьих лицaxiosилиfetchДелатьзапрос данных, могут возникнуть проблемы с путаницей данных при множественных запросах.


Следующие ситуации — это все запросы, которые не требуют междоменных запросов, и сервер и клиент могут запрашивать контент без какой-либо другой настройки прокси.

useAsyncData && useLazyAsyncData

useAsyncData нужно объединить $fetch использовать и Передайте уникальное значение ключа, чтобы избежать путаницы при запросе слишком большого количества данных. По умолчанию значение Lazy равно false. , который будет блокировать переходы по маршрутизации при переходе с других страниц. То есть: маршрут нужно переключать после выполнения запроса.

По умолчанию для параметра useLazyAsyncData установлено значение true, и дополнительная настройка не требуется.

Язык кода:txt
копировать
<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, чтобы отслеживать возвращаемый контент и назначать значение при его изменении.

Вы также можете напрямую деконструировать полученный контент, не выполняя обработку присваивания, и использовать его для рендеринга страниц, поэтому нет необходимости отслеживать.

Язык кода:txt
копировать
<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>

useFetch && useLaztFetch

Эквивалент использованияAsyncData. Синтаксический сахар,Нет необходимости писать$fetchНет необходимости передавать уникальныеid

useLaztFetch по умолчанию устанавливает для lazy значение true.

Писать относительно просто

Язык кода:txt
копировать
const { data } = await useFetch(
  'https://xxx.xxx.com',
  {
    headers: {
     ...
    },
    transform: (res: any) => res.data.films, // Если возвращенного контента слишком много, вы можете отфильтровать его. Желаемый возвращаемый контент
    // lazy: false, // По умолчанию здесь установлено значение false Блокирует отрисовку маршрута (необходимо дождаться запроса Маршрут будет перенаправлен после возвращения данных)
    lazy: true // Это не будет блокировать переходы по маршруту, но после перехода данные будут отсутствовать. Вам необходимо отслеживать данные с помощью наблюдения, а затем присваивать значение.
  }
)

</script>
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода