Несумісні зміни
На цій сторінці перераховано всі зміни Vue 3, які порушують роботу Vue 2.
Хоча здається, що багато чого змінилося, багато з того, що ви знаєте та любите про Vue, залишається незмінним; але ми хотіли бути максимально детальними та надати докладні пояснення та приклади для кожної задокументованої зміни.
Деталі
Глобальний API
- API Global Vue змінено для використання екземпляра програми
- Глобальні та внутрішні API було реструктуровано, щоб вони могли трясти дерево
Директиви шаблонів
v-modelвикористання компонентів було перероблено, замінившиv-bind.sync- використання
keyна вузлах<template v-for>і не-v-forзмінено - змінено пріоритет
v-ifіv-forпри використанні для того самого елемента v-bind="object"тепер чутливий до порядкуv-on:event.nativeмодифікатор видалено
Компоненти
- Функціональні компоненти можна створити лише за допомогою простої функції
- Атрибут 'functional' однофайлового компонента (SFC)
<template>і параметр компонентаfunctionalзастаріли - Асинхронні компоненти тепер потребують створення методу
defineAsyncComponent - Події компонентів тепер слід оголошувати за допомогою параметра
emits
Функція візуалізації
- API функції відтворення змінено
- Властивість
$scopedSlotsвидалено, а всі слоти доступні через$slotsяк функції $listenersбуло видалено/об’єднано в$attrs$attrsтепер включає атрибутиclassіstyle
Спеціальні елементи
- Перевірки користувацьких елементів тепер виконуються під час компіляції шаблону
- Використання спеціального атрибута
isобмежено лише зарезервованим тегом<component>
Інші незначні зміни
— Параметр destroyed життєвого циклу було перейменовано на unmounted.
- Опцію життєвого циклу
beforeDestroyбуло перейменовано наbeforeUnmount - Фабрична функція реквізитів
defaultбільше не має доступу до контекстуthis - API спеціальної директиви змінено для узгодження з життєвим циклом компонента, а
binding.expressionвидалено - Параметр
dataзавжди слід оголошувати як функцію - Параметр
dataз міксинів тепер об’єднано поверхнево - Стратегію примусу атрибутів змінено
- Деякі класи переходу перейменовано
<TransitionGroup>тепер не відображає елемент оболонки за замовчуванням- Під час перегляду масиву зворотний виклик запускатиметься лише тоді, коли масив буде замінено. Якщо вам потрібно запустити мутацію, необхідно вказати опцію
deep. - Теги
<template>без спеціальних директив (v-if/else-if/else,v-forабоv-slot) тепер розглядаються як звичайні елементи та призведуть до рідного<template>замість відтворення його внутрішнього вмісту. - Змонтована програма не замінює елемент, до якого вона змонтована
- Префікс подій життєвого циклу
hook:змінено наvnode-
Видалені API
- підтримка
keyCodeяк модифікаторівv-on - методи екземплярів $on, $off і $once
- Фільтри
- Атрибути вбудованих шаблонів
- властивість екземпляра
$children - параметр "propsData"
- Метод екземпляра
$destroy. Користувачі більше не повинні вручну керувати життєвим циклом окремих компонентів Vue. - Глобальні функції
setіdelete, а також методи екземплярів$setі$delete. Вони більше не потрібні для виявлення змін на основі проксі.