РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnuSpRqDT 11 of 90 menu
◀ ▶

Преобразование данных в Nuxt

API часто отдаёт большие объекты, а на странице нужны одни подписи или числа. Функция useAsyncData принимает объект опций; функция transform получает сырой ответ обработчика и возвращает то, что попадёт в data и в шаблон.

Давайте познакомимся со списком имён пользователей. Загрузим полные записи, а в transform оставим только поле name:

<script setup> const { data } = await useAsyncData( 'user-names', () => $fetch( 'https://jsonplaceholder.typicode.com/users', ), { transform: (users) => users.map( (user) => user.name, ), }, ); </script> <template> <ul> <li v-for="name in data" :key="name" > {{ name }} </li> </ul> </template>

В data теперь массив строк, а не массив объектов с id, email и адресом. Шаблон проще, а лишние поля не утекут в разметку и в payload для клиента.

Тот же приём работает для любого JSON, который вернул обработчик: transform выполняется после успешной загрузки и до сохранения результата под ключом.

Сделайте страницу /products, которая запрашивает товары с тестового API и через transform оставляет в data только цены, выведенные списком чисел.

Сделайте страницу /posts, где из ответа JSONPlaceholder в data попадают только заголовки постов, без текста и идентификаторов авторов.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить