Итоги
В этом уроке вы узнали, что:
- Vue заново отрисовывает шаблон, только когда меняются реактивные данные. Обычная переменная может измениться, но страница этого не покажет.
ref(), подключённый строкойimport { ref } from "vue";, создаёт реактивное состояние:const count = ref(0);. Рефы всегда объявляют черезconst: реф остаётся тем же, меняется его значение.- В скрипте значение — это
count.value. В шаблоне Vue распаковывает рефы, так что там простоcount.count++в скрипте заканчивается ошибкойTypeError: Assignment to constant variable., а{{ count.value }}в шаблоне ничего не показывает. @click— сокращение отv-on:click. Его значение — имя функции, вызов с аргументами вродеaddToOrder('Эспрессо'), который Vue выполняет при клике, а не сразу, или короткая инструкция вродеcount++. Всё, что длиннее, уходит в функцию в скрипте.- Обработчик, названный без скобок, получает объект события. Когда вы передаёте свои аргументы, объект события доступен как
$event. @работает с любым событием:@inputиevent.target.valueдля ввода текста (а:valueкладёт реф в поле),@keydown.enterдля Enter,@mouseoverи@mouseleaveдля мыши.- Реф может хранить массив или объект.
push(),pop(),splice()и изменения свойств вродеorder.value.note = "Без сахара"обновляют страницу, как и новый массив в.value, например изfilter().
В следующем уроке, «Условия и списки», вы будете показывать части страницы только при выполнении условия и выводить список из массива, по элементу на каждую позицию.
Но сначала немного практики: список ожидания на столики кафе. В App.vue есть только заголовок, а остальное вы напишете сами.
Задание
- 1
Под заголовком добавьте текстовое поле для имени гостя. Храните набранное в рефе
name(с помощью@input) и привяжите поле к нему через:value. Когда в поле нажимают Enter, добавляйте имя в конец рефаwaiting, который хранит массив, и очищайте поле. Под полем покажите список в абзаце с классомwaiting:Ожидают: Анна, Тимур. - 2
Добавьте под списком кнопку «Посадить следующего». Она убирает из списка ожидания первое имя (с помощью
splice(0, 1)) и показывает его в абзаце с классомseated:За столиком: Анна. Когда никто не ждёт, кнопка ничего не делает.