Какие есть опции у useAsyncData

Ответ

useAsyncData в Nuxt.js позволяет асинхронно загружать данные на сервере или клиенте. Основные опции:

  • lazy — откладывает загрузку данных до момента их явного вызова.
  • server — определяет, выполнять ли запрос на сервере (по умолчанию true).
  • default — начальное значение данных до завершения загрузки.
  • transform — функция для преобразования полученных данных.
  • pick — выбирает только указанные поля из ответа.
  • watch — массив реактивных зависимостей для повторного выполнения запроса.

Пример:

const { data, pending } = useAsyncData(
  'users',
  () => $fetch('/api/users'),
  {
    lazy: true,
    transform: (users) => users.map(user => user.name)
  }
);

Ответ 18+ 🔞

Смотри, вот тебе про useAsyncData в Nuxt, чтоб ты не тупил, как Герасим, когда ему про Муму объясняли.

Это, блядь, такая штука, чтобы данные подгружать — на сервере или уже в браузере. Не просто так, а с умом, чтобы не ебашить запросы куда попало.

Основные её прибамбасы, на которые смотреть надо:

  • lazy — это когда она, хитрая жопа, не лезет за данными сразу, а ждёт, пока ты её явно не позовёшь. Ленивая, сука, но иногда полезная.
  • server — тут всё просто: грузить на сервере или нет? По дефолту true, то есть да, грузи, ёпта, сразу при рендере страницы.
  • default — чем данные заполнить, пока они, блядь, ещё не приехали. Чтобы не светилось пустое место, как мозги у иного разработчика.
  • transform — вот это мощь! Получил ты, допустим, овердохуища полей, а тебе надо только имена. Тык сюда функцию — она как волшебная палочка, отфильтрует всё лишнее.
  • pick — если лень функцию в transform писать, можно просто поля указать, какие выдрать из ответа. Удобно, блядь.
  • watch — смотри, вот реактивная переменная поменялась — и запрос пошёл заново. Автоматом, ёбана! Как будто кто-то тебя в спину толкнул.

Ну и смотри, как это в коде выглядит, чтоб не быть полупидором, который только в документацию тыкает:

const { data, pending } = useAsyncData(
  'users',
  () => $fetch('/api/users'),
  {
    lazy: true,
    transform: (users) => users.map(user => user.name)
  }
);

Вот, видишь? Ключ 'users' дали, функцию, которая фетчит, и настройки. lazy: true — не лезет сразу. А transform выковыривает только имена из массива пользователей. Красота, блядь, а не инструмент! Главное — понять, что к чему, а не тыкать наугад, как слепой крот.