Как сделать tab активным динамически на основе внешнего управления?

Для сделать вкладку (tab) активной динамически на основе внешнего управления в Vue.js, необходимо использовать условные классы или привязки данных.

Первый способ - использование условных классов. В HTML-разметке внутри компонента, который отвечает за вкладки, нужно добавить директиву v-bind:class. Эта директива будет устанавливать или удалять класс активного состояния в зависимости от значения булевой переменной. Например:

<template>
  <div>
    <div 
      v-bind:class="{ active: activeTab === 'tab1' }"
      @click="activeTab = 'tab1'"
    >
      Tab 1
    </div>
    <div 
      v-bind:class="{ active: activeTab === 'tab2' }"
      @click="activeTab = 'tab2'"
    >
      Tab 2
    </div>
    <div 
      v-bind:class="{ active: activeTab === 'tab3' }"
      @click="activeTab = 'tab3'"
    >
      Tab 3
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'tab1'
    }
  }
}
</script>

<style>
.active {
  background-color: blue;
  color: white;
}
</style>

В этом примере используется переменная activeTab, которая хранит информацию о текущей активной вкладке. Когда пользователь кликает на одну из вкладок, значение переменной activeTab обновляется, что приводит к изменению класса активного состояния.

Второй способ - использование привязки данных. В HTML-разметке внутри компонента также нужно добавить директиву v-bind:class, но уже с использованием названия класса в качестве значения. Например:

<template>
  <div>
    <div 
      v-bind:class="{'active': activeTab === 'tab1'}"
      @click="activeTab = 'tab1'"
    >
      Tab 1
    </div>
    <div 
      v-bind:class="{'active': activeTab === 'tab2'}"
      @click="activeTab = 'tab2'"
    >
      Tab 2
    </div>
    <div 
      v-bind:class="{'active': activeTab === 'tab3'}"
      @click="activeTab = 'tab3'"
    >
      Tab 3
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeTab: 'tab1'
    }
  }
}
</script>

<style>
.active {
  background-color: blue;
  color: white;
}
</style>

В этом случае класс активного состояния будет добавляться, если значение переменной activeTab соответствует названию вкладки.

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

Кроме того, вы можете добавить логику для отображения или скрытия контента, связанного с каждой вкладкой, с использованием условных операторов или директивы v-show или v-if.