Зв'язок даних та UI
У Vue.js шаблон (<template>) реактивно пов'язаний з даними компонента.
Це означає: коли ви змінюєте значення в data(), ref() або reactive(), інтерфейс автоматично оновлюється без ручного втручання в DOM.
1. Принцип роботи зв'язку даних
Vue реалізує механізм двостороннього зв'язування даних (data binding):
- З коду -> у шаблон: дані з компонента автоматично відображаються в DOM.
- З шаблону -> у код (наприклад, при введенні тексту в
input): зміни користувача можуть автоматично оновлювати дані в компоненті (черезv-model).
2. Одностороннiй зв'язок (Data -> Template)
Приклад:
<template>
<h1>Привіт, {{ name }}!</h1>
</template>
<script setup>
import { ref } from 'vue'
const name = ref('Oleh')
</script>Тут:
{{ name }}- інтерполяція (підстановка даних у шаблон);ref('Oleh')робитьnameреактивним;- якщо змінити
name.value = 'Bob', Vue сам оновить текст на сторінці.
3. Прив'язка атрибутів (v-bind)
Для динамічної зміни HTML-атрибутів використовується директива v-bind: (або коротко :).
<template>
<img :src="avatarUrl" :alt="userName" />
</template>
<script setup>
import { ref } from 'vue'
const avatarUrl = ref('/images/user.png')
const userName = ref('Oleh')
</script>
v-bindзв'язує атрибут зі значенням змінної і оновлює DOM при змінах.
4. Обробка подій (v-on)
Для зв'язку даних і дій використовується директива v-on: (або коротко @).
<template>
<button @click="increment">Лічильник: {{ count }}</button>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() {
count.value++
}
</script>Коли користувач клікає по кнопці, викликається функція, яка змінює count, а Vue автоматично оновлює текст у шаблоні.
5. Двостороннiй зв'язок (v-model)
Якщо потрібно, щоб зміни даних та інтерфейсу відбувалися в обидва боки (наприклад, при введенні тексту), використовується v-model.
<template>
<input v-model="message" placeholder="Введіть текст" />
<p>Ви ввели: {{ message }}</p>
</template>
<script setup>
import { ref } from 'vue'
const message = ref('')
</script>При зміні message -> оновлюється input.
При введенні тексту в input -> оновлюється message.
6. Що робить Vue "під капотом"
- Vue створює реактивні посилання на дані (
ref,reactive). - Шаблон компілюється у функцію рендера.
- При зміні даних Vue:
- Позначає компонент як "брудний" (потребує оновлення),
- Перераховує шаблон через Virtual DOM,
- Знаходить відмінності і точково оновлює реальний DOM.
Підсумок
У Vue.js шаблон і дані компонента пов'язані реактивно:
- через інтерполяції (
{{ }}) для виведення значень,v-bindдля динамічних атрибутів,v-onдля подій,v-modelдля двостороннього зв'язування.При зміні стану Vue автоматично оновлює інтерфейс, без ручних маніпуляцій з DOM.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.