Почему шаблон vue cli 3 или любой другой шаблон имеет `h => h (App)` на main. js вместо просто `new Vue (App)`? - PullRequest
0 голосов
/ 19 июня 2020

Если вы откроете любой шаблон CodeSandbox Vue или vue -cli 3, вы можете заметить этот код в main.js

Методе 1

new Vue({
  render: (h) => h(App),
}).$mount("#app");

Я немного запутался в этом коде, почему бы просто не

Метод 2

new Vue(App).$mount("#app");

Есть ли польза от написания Method 1?

1 Ответ

1 голос
/ 19 июня 2020

Да, есть преимущество - при использовании объекта options вы также можете добавить Vue -Router, Vuex, определить некоторые данные, вычисляемые свойства, наблюдатели, методы и даже некоторые хуки жизненного цикла. Например:

new Vue({
  data:
  {
    currentUser: null,
    lastError: null,
    showLoadingSpinner: false,
  },
  computed:
  {
    baseURL()
    {
      return process.env.BASE_URL;
    }
  },
  created()
  {
    this.$on('logout', this.logout);
  },
  beforeDestroy()
  {
    this.$off('logout', this.logout);
  },
  router: myRouter,
  store: myStore,
  render: h => h(App),
}).$mount('#app');
...