Как хранить дополнительные данные компонентов?

В Vue.js существует несколько способов хранить дополнительные данные компонентов. Рассмотрим наиболее популярные из них.

1. Пропсы (props):
Для передачи данных из родительского компонента в дочерний компонент используются пропсы. Пропсы являются свойствами компонента, которые определены в родительском компоненте и передаются в дочерний компонент при его использовании. Пропсы доступны только для чтения в дочернем компоненте и могут быть использованы для передачи любых данных, включая примитивные значения, объекты или даже функции.

Пример:

Родительский компонент:

   <template>
     <child-component :message="message"></child-component>
   </template>
   <script>
   export default {
     data() {
       return {
         message: 'Привет, Vue.js!'
       }
     }
   }
   </script>

Дочерний компонент:

   <template>
     <div>{{ message }}</div>
   </template>
   <script>
   export default {
     props: ['message']
   }
   </script>

В этом примере родительский компонент передает сообщение "Привет, Vue.js!" в дочерний компонент через пропс с именем "message", и дочерний компонент просто выводит его на страницу.

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

Пример:

   <template>
     <div>{{ message }}</div>
   </template>
   <script>
   export default {
     data() {
       return {
         message: 'Привет, Vue.js!'
       }
     }
   }
   </script>

В этом примере компонент содержит единственное свойство data - message, которое содержит строку "Привет, Vue.js!". Значение этого свойства может быть использовано внутри шаблона компонента через двойные фигурные скобки.

3. Вычисляемые свойства (computed properties):
Вычисляемые свойства - это методы, которые вычисляют значения на основе зависимостей и кэшируют результаты, чтобы избежать ненужных вычислений на каждом обновлении. Вычисляемые свойства могут быть использованы в шаблоне компонента так же, как и обычные свойства данных.

Пример:

   <template>
     <div>{{ fullName }}</div>
   </template>
   <script>
   export default {
     data() {
       return {
         firstName: 'John',
         lastName: 'Doe'
       }
     },
     computed: {
       fullName() {
         return this.firstName + ' ' + this.lastName
       }
     }
   }
   </script>

В этом примере компонент имеет два свойства данных: firstName и lastName. Вычисляемое свойство fullName использует эти данные для вычисления полного имени, которое будет отображаться на странице.

4. Методы компонента (methods):
Методы компонента - это обычные функции, которые могут быть вызваны из шаблона компонента или из других методов компонента. Методы могут быть использованы для выполнения дополнительных операций или для обработки событий.

Пример:

   <template>
     <div>
       <button @click="sayHello">Нажми на меня!</button>
     </div>
   </template>
   <script>
   export default {
     methods: {
       sayHello() {
         alert('Привет, Vue.js!')
       }
     }
   }
   </script>

В этом примере компонент содержит метод sayHello, который будет вызываться при клике на кнопку и показывать всплывающее окно с текстом "Привет, Vue.js!".

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