LoginSignup
5
1

More than 1 year has passed since last update.

【Vue.js】createdとmountedの違いについて簡単に解説

Posted at

はじめに

Vue.jsで開発していて画面の初期表示はmountedを使うと良いと教えてもらったがよくわからなかったので、調べた内容を備忘録としてここに残しておきます。
また、createdとmountedの違いについても少し調べたため簡単にまとめておきます。
もし間違っている箇所があれば優しく指摘していただけると幸いです。

結論

  • created:Vueインスタンスが生成され、データが初期化された後に実行される
        (DOMはまだ生成されていないので、DOM操作はできない)
  • mounted:VueインスタンスがDOMにマウントされた後に実行される
        (DOM生成された後なのでDOM操作ができる)

created

ここではまだDOMが生成されていないため、DOM操作はまだできない。
ただし、データは初期化されているため、リアクティブデータやメソッド等を参照することは可能。

App.vue
<script>
new Vue({
  el: 'app',
  data() {
    return {
      styles: {
        width: '100vw',
        height: '100vh'
      }
    }
  },
  created () {
    // created内で実行したい処理を記述
    console.log('width:' + this.styles.width)
    console.log('height:' + this.styles.height)
    // width: 100vw 
    // height: 100vh
  }
});
</script>

mounted

インスタンス初期化時、DOMが生成された後に実行されるため、DOM操作ができる。

App.vue
<script>
new Vue({
  el: 'app',
  data() {
    return {
      value: 'Value'
    }
  },
  mounted() {
    // ここにmounted内で実行したい処理を記述
  }
});
</script>

ただし
mountedの段階で全ての子コンポーネントもマウントされているとは限らない。
全ての子コンポーネントがレンダリングされるまで待つ場合は$nextTickを使うと良い。

App.vue
<script>
new Vue({
  el: 'app',
  data() {
    return {
      value: 'Value'
    }
  },
  mounted() {
    this.$nextTick(() => {
    // ここにmounted内で実行したい処理を記述
    // 子コンポーネントもマウントされてから実行される
    });
  }
});
</script>
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1