В чем разница между created и mounted

«В чем разница между created и mounted» — вопрос из категории Vue, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

created и mounted — это хуки жизненного цикла во Vue.js.

created:

  • Вызывается синхронно после создания экземпляра компонента.
  • Доступны данные (data), вычисляемые свойства (computed), методы (methods), но DOM ещё не сгенерирован (this.$elundefined).
  • Подходит для инициализации данных, API-запросов.

mounted:

  • Вызывается после монтирования компонента в DOM (this.$el доступен).
  • Можно работать с DOM, например, использовать querySelector или сторонние библиотеки, требующие DOM.

Пример:

export default {
  data() {
    return { message: 'Hello' }
  },
  created() {
    console.log(this.message); // 'Hello'
    console.log(this.$el);     // undefined
  },
  mounted() {
    console.log(this.$el);     // <div>Hello</div>
  }
}