Итоги
В этом уроке вы узнали, что:
- У компонента есть жизненный цикл: он создаётся (выполняется его
<script setup>), монтируется (его элементы помещаются на страницу), обновляется (после каждого изменения его состояния) и размонтируется (убирается со страницы, например черезv-if, а вместе с ним и его состояние). - Хуки жизненного цикла запускают ваш код в эти моменты:
onMounted(() => { … }),onUpdated()иonUnmounted(); их импортируют из"vue"и вызывают в начале<script setup>. - Данные из файла загружают в
onMountedс помощьюasync-функции,fetch()иresponse.json(). Реф вродеloadingпозволяет шаблону пока показыватьЗагрузка…. Никогда не ставьтеawaitв начало<script setup>: тогда компонент ничего не покажет. response.okравноfalse, когда сервер ответил ошибкой, например 404 Not Found при неверном названии файла. Проверяйте его и показывайте сообщение об ошибке вместо данных.- Что компонент запустил, то он и останавливает: интервал, запущенный в
onMounted, останавливают вonUnmountedчерезclearInterval(). Иначе он продолжит работать и после того, как компонента не станет. - Реф шаблона даёт вам элемент шаблона:
ref="search"в шаблоне иconst search = useTemplateRef("search");в скрипте.search.value— это элемент после монтирования компонента иnullдо него. - То, что сохранено в
localStorage, читают при создании рефа, потому что он отвечает сразу, аwatchсохраняет значение при каждом изменении.
В следующем уроке, «Композаблы», вы вынесете код вроде загрузки меню из компонентов в отдельные функции, которыми сможет пользоваться любой компонент.
Но сначала потренируйтесь на странице отзывов кафе: она загружает то, что написали гости, ставит курсор в поле для вашего отзыва и сохраняет написанное, даже если закрыть страницу.
Задание
- 1
В
onMountedзагрузитеreviews.jsonвreviews, чтобы список показывал каждый отзыв в видеАнна: Лучший морковный торт в городе.Пока отзывы загружаются, показывайте<p>Загрузка…</p>вместо списка. - 2
Когда страница открывается, поставьте курсор в текстовое поле для вашего отзыва с помощью рефа шаблона.
- 3
Сохраните черновик: при каждом изменении текста в поле записывайте его в
localStorageпод ключомdraft, а при запуске приложения начинайтеdraftс сохранённого значения. Это уже текст, поэтому JSON не нужен. Проверьте: напишите что-нибудь и нажмите «Запустить».