Определение реквизита

Реквизиты — это настраиваемые атрибуты, которые передают данные от родительского компонента к дочернему компоненту. Vue позволяет передавать данные только от родителя к дочернему. Поэтому не обновляйте свойство внутри дочернего компонента.

Что такое родительские и дочерние компоненты

Поясним это на простом примере:

Выполнение

Краткое введение

Vue предоставляет два способа определения и использования свойств. defineProps() и provide-inject. Обычно defineProps() является низкоуровневым методом. provide-inject – это высокоуровневый способ работы с реквизитами. Эти два метода имеют очень разные особенности. Давайте создадим простое приложение, которое отображает различия между defineProps() и Provide-inject.

Убедитесь, что ваша установка Vue работает и позволяет использовать API композиции.

Код

Добавьте следующий код в соответствующие компоненты.

App.vue

Props_vs_Provide.vue

Использование определенияПропс()

Одним из ключевых преимуществ использования defineProps() является то, что он дает вам контроль над реквизитами. Вы можете строго указывать типы значений и значения по умолчанию, а также отслеживать реквизиты.

Давайте определим programmingLangprop.

Затем используйте withDefaults(), чтобы указать значение по умолчанию для programmingLang.

Поскольку мы не предоставили реквизиту programmingLang в App.vue значение, значение по умолчанию Typescript должен отображаться на кнопке. Давайте воспользуемся v-моделью, чтобы предоставить programmingLang динамическое значение.

В App.vue

Теперь мы должны иметь возможность динамически предоставлять наш любимый язык программирования. Из приведенной выше практики опора;

  • Имеет тип string.
  • Используется ли необязательное значение key?: type
  • Имеет значение по умолчанию Typescript.
  • Можно легко отследить. родительский компонентApp.vue. дочерний компонент – это Props_vs_Provide.vue.

Использование предоставления-внедрения

Основное преимущество использования provide-inject заключается в том, что он удобен в длинных цепочках компонентов. Поэтому вы можете легко использовать свойства, не беспокоясь о родительском или дочернем компоненте.

Давайте определим myIDEprop.

В Props_vs_Provide

По сравнению с defineProps() нам нужно всего несколько строк кода в provide-inject. Более того, provide-inject очень полезен при работе с длинной цепочкой компонентов. Однако:

  • Вы не можете эффективно отслеживать реквизит. Чтобы противостоять этому, вы можете добавить комментарий, чтобы указать родительский или дочерний компонент.
  • Вы не можете явно определить тип значения для реквизита. Vue предоставляет такие механизмы, как:
  • inject(prop, defaultValue) будет работать, даже если нет предоставленной поддержки с помощью provide(). Это может привести к некоторым трудно отслеживаемым ошибкам.
  • Вы не можете указать значение по умолчанию. inject() предоставляет значение по умолчанию, которое работает, только если нет предоставленного реквизита с использованием provide().

Заключение

В заключение, чтобы передать свойство вашим компонентам независимо от родительского или дочернего компонента, используйте provide-inject. Но если ваша цель состоит в том, чтобы иметь как можно больше контроля над реквизитом, используйте defineProps()

Надеюсь, вам понравилась статья. Пожалуйста, аплодируйте, подпишитесь и оставьте любые комментарии.