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

Ключ запроса в Nuxt

У функции useAsyncData первый аргумент - ключ. Под этим именем Nuxt сохраняет результат обработчика и передаёт его в HTML, чтобы клиент подхватил те же данные без повторного запуска.

Если на сайте два вызова с одним и тем же ключом, они делят один кэш: второй вызов не загружает заново, а получает уже готовое значение первого. Это удобно для одной сущности на разных компонентах, но опасно, когда ключи случайно совпали у разных задач.

Давайте изучим страницу сотрудников. Зададим ключ staff и загрузим пользователей через обработчик:

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

На другой странице для постов нужен свой ключ. Если вызвать useAsyncData с тем же staff, но другим URL, в data останутся пользователи от первого запроса, а список постов так и не появится. Имена ключей должны однозначно описывать, что лежит в кэше:

<script setup> const { data } = await useAsyncData( 'posts', () => $fetch( 'https://jsonplaceholder.typicode.com/posts', ), ); </script> <template> <ul> <li v-for="post in data" :key="post.id" > {{ post.title }} </li> </ul> </template>

Ключ пишут строкой. Его видно в коде страницы и по нему же Nuxt сопоставляет payload между сервером и браузером.

Сделайте страницу /orders, которая загружает заказы через useAsyncData с отдельным ключом, не совпадающим с ключами других списков в проекте.

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

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