Все средства связи доступны здесь

Пишите впереди

В этой статье используется способ написания <script setup />, который свободнее, чем API опций. Затем мы поговорим о следующих семи способах взаимодействия компонентов:

  1. реквизит
  2. испускают
  3. v-модель
  4. судьи
  5. предоставить/ввести
  6. СобытиеАвтобус
  7. vuex/пиния

Возьмите пример

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

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

1. Реквизит

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

В соответствии с приведенной выше демонстрацией мы определяем данные и операции над данными в родительском компоненте, а дочерний компонент только отображает список.

The parent component code is as follows:

Дочернему компоненту нужно только отображать значение, переданное родительским компонентом.

The code is as follows:

2. излучать

Emit также является наиболее распространенным способом взаимодействия компонентов в Vue, который используется дочерними компонентами для передачи сообщений родительским компонентам.

Мы определяем список в родительском компоненте, а дочернему компоненту нужно только передать добавленное значение.

The child component code is as follows:

После нажатия кнопки [Добавить] в дочернем компоненте мы генерируем пользовательское событие и передаем добавленное значение родительскому компоненту в качестве параметра.

The parent component code is as follows:

В родительском компоненте вам нужно только прослушивать пользовательские события дочернего компонента, а затем выполнять соответствующую логику добавления.

3. v-модель

v-model — отличный синтаксический сахар в Vue, например следующий код.

<ChildComponent v-model:title="pageTitle" />

Это сокращенная форма следующего кода

<ChildComponent :title="pageTitle" @update:title="pageTitle = $event" />

Это действительно намного проще. Теперь мы будем использовать v-модель для реализации приведенного выше примера.

child component

В дочернем компоненте мы сначала определяем реквизиты и генерируем, а затем генерируем указанное событие после завершения добавления.

Примечание. update:* — это фиксированный способ написания в Vue, а * представляет имя свойства в свойствах.

Его относительно просто использовать в родительском компоненте, код выглядит следующим образом:

4. ссылки

При использовании option API мы можем получить указанный элемент или компонент через this.$refs.name, но не в комбинированном API. Если мы хотим получить его по ссылке, нам нужно определить объект Ref с тем же именем, к которому можно получить доступ после монтирования компонента.

The sample code is as follows:

The child component code is as follows:

Примечание. По умолчанию компонент установки закрыт для получения общедоступного экземпляра компонента через ссылку на шаблон. Если вам нужно открыть его, вам нужно сделать это через defineExpose API.

5. предоставить/ввести

Предоставление и внедрение — это пара API-интерфейсов, предоставляемых в Vue. Каким бы глубоким ни был уровень, API может реализовать передачу данных от родительских компонентов к дочерним.

The sample code looks like this:

parent component

child component

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

6. шина событий

EventBus убран в Vue 3, но это можно сделать с помощью сторонних инструментов. Vue официально рекомендует mitt или tiny-emitter. В большинстве случаев не рекомендуется использовать глобальную шину событий для реализации связи между компонентами. Хотя это относительно просто и грубо, поддержка шины событий в долгосрочной перспективе является большой проблемой, поэтому я не буду объяснять это здесь. Для получения подробной информации вы можете прочитать документацию конкретного инструмента.

7. Vuex и Пиния

Vuex и Pinia — это инструменты управления состоянием в Vue 3. С помощью этих двух инструментов можно легко реализовать взаимодействие между компонентами. Поскольку эти два инструмента являются относительно мощными, они не будут здесь показаны. Для получения подробной информации обратитесь к документации.

Окончательно

На этом статья заканчивается, ничего сложного.

Спасибо за прочтение.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообществе Discord.