Vue-FAQ
940 subscribers
580 photos
92 videos
564 links
Канал сайта https://vue-faq.org
Информация о Vue.js, фронтенд разработке и не только

Contacts: @RuslanMakarov
Download Telegram
Во Vue 3 вышла Reactive Props Destructure - деструктуризация пропсов

Основной плюс - возможность указывать дефолтные значения более человеческим способом:

const { count = 0, msg = "hello" } = defineProps<{
count?: number;
message?: string;
}>();

const double = computed(() => count * 2);


Как это делалось ранее (и можно делать сейчас):

const props = withDefaults(
defineProps<{
count?: number;
msg?: string;
}>(),
{
count: 0,
msg: "hello",
}
);


Деструктуризация пропсов - это осколки невзлетевшего Reactivity Transform

По сути деструктуризация пропсов это просто макрос, скрывающий под собой обычную работу с пропсами:

// на входе
const { count } = defineProps(["count"]);
console.log(count);

// на выходе компилятора
const __props = defineProps(["count"]);
console.log(__props.count);


Минусы:

- Деструктурированные пропсы могут быть случайно переданы в функцию, что приведет к потере реактивности

- Пропсы перестают быть явными (становятся неотличимы от обычных переменных)

- Путаница для новичков с магией компилятора

Решение:

Не забывать работать с ними как с props.X либо не использовать деструктуризацию.

#props #reactivity
👍15👎1