Итоги
В этом уроке вы узнали, что:
- Страницу делят на компоненты, каждый в своём файле
.vue, со своим шаблоном,<script setup>и<style scoped>, который оформляет только собственные элементы компонента.App.vue— главный из них. - Компонент, который использует другой, импортирует его в своём
<script setup>,import MenuItem from "./MenuItem.vue";(.vueобязательно), и помещает в свой шаблон,<MenuItem />, столько раз, сколько нужно. - Каждый файл — это модуль, и то, что в нём есть, существует только там, если файл этого не экспортирует.
export defaultэкспортирует главное значение файла, которое импортируют без скобок под выбранным именем.export constэкспортирует значение по имени, и его импортируют в скобках:import { cafeName } from "./cafe.js";.<script setup>сам экспортирует свой компонент, а собственных экспортов у него быть не может. - Компоненты называют в PascalCase, одинаково в файле, в импорте и в теге. Тег, записанный иначе, или отсутствующий импорт дают в консоли
[Vue warn]: Failed to resolve component. - Родитель передаёт данные компоненту через пропсы, которые компонент объявляет через
defineProps:price: { type: Number, required: true }или со значениемdefault. Без двоеточия проп — это текст, с двоеточием — JavaScript::price="2",:item="item". - Пропсы только для чтения. То, что принадлежит одному компоненту, — его собственное состояние,
ref, и у каждой копии компонента оно своё. v-forработает с компонентами, вместе с:key, а целый объект может быть одним пропом.
В следующем уроке, «События компонентов», вы увидите, как компонент сообщает родителю, что что-то произошло, например что покупатель заказал пункт меню, чтобы родитель мог изменить свои данные.
Но сначала немного практики: отзывы о кафе. В Review.vue пока только стиль, а остальную часть компонента вы напишете сами.
Задание
- 1
В
Review.vueнапишите компонент с двумя обязательными пропсами:author— текст иstars— число. Он показывает<li class="review">с автором в<strong>и после него столько★, сколько звёзд у отзыва, в<span class="stars">(v-forумеет перебирать число). ВApp.vueимпортируйте его и покажитеReviewдля каждого отзыва из списка. - 2
Добавьте проп
text— текст со значением по умолчанию"Без комментариев.", который отзыв показывает в<p>под автором. У отзыва Лизы текста нет, поэтому у неё будет написано «Без комментариев.»