Во
Основной плюс - возможность указывать дефолтные значения более человеческим способом:
Как это делалось ранее (и можно делать сейчас):
Деструктуризация пропсов - это осколки невзлетевшего
По сути деструктуризация пропсов это просто макрос, скрывающий под собой обычную работу с пропсами:
Минусы:
- Деструктурированные пропсы могут быть случайно переданы в функцию, что приведет к потере реактивности
- Пропсы перестают быть явными (становятся неотличимы от обычных переменных)
- Путаница для новичков с магией компилятора
Решение:
Не забывать работать с ними как с
#props #reactivity
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