PassFront
  1. PassFront
  2. База знаний
  3. Реактивность

В чем разница между props, data и computed?

Реактивность

В компоненте Vue данные приходят из трёх источников: props — снаружи от родителя, data — собственное состояние компонента, computed — значения, вычисленные из первых двух.

props

  • Передаются родителем и описывают «вход» компонента.
  • Только для чтения: изменять их в дочернем компоненте нельзя — нужно сообщить родителю событием.

data

  • Внутреннее изменяемое состояние: открыт ли попап, текст в поле.
  • Реактивно: изменение вызывает перерисовку.

computed

  • Производные значения: отфильтрованный список, полное имя.
  • Кешируются и пересчитываются только при изменении зависимостей.
export default {
  props: { items: Array },
  data: () => ({ query: '' }),
  computed: {
    visible() {
      return this.items.filter((item) => item.includes(this.query));
    },
  },
};

Коротко для собеседования

props — входные данные от родителя (только чтение), data — своё изменяемое состояние, computed — кешируемые производные значения.

Подробнее: Vue — Props

Другие вопросы раздела