0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Vue.js】Vueインスタンスのライフサイクル

Last updated at Posted at 2021-05-16

はじめに

仕事で使う事になったので1からVue.jsについて学んだ。
ちゃんと覚えておかないとまずそうな事を備忘録として1つ1つ残しておく。

Vueインスタンスのライフサイクル

Vueインスタンスにはライフサイクルという概念があり、以下のようなライフサイクル(フェーズ)がある。
これが分かっていると、DOMの描画後に...などの柔軟な実装ができるようになる。
Vueインスタンスのライフサイクル.png
上記の図中の状態(プロパティ)名と書かれている部分がVueインスタンスが持つフェーズである。
各フェーズでconsole.log()を出力させるようにすると、以下の動画のように各フェーズに到達してconsole.log()が出力されているのが分かる。
ezgif.com-gif-maker (1).gif
動画のソースコードは以下。

sample.html
<body>
    <div id="app">
        <h1>こんにちは、{{name}}</h1>
        <button @click="name = '田中 太郎'">名前を変更</button>
        <button @click="destroy">インスタンスを破壊</button>
    </div>

    <script src=" https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.js"></script><script src="./vue.js"></script>
    <script>
        const vm = new Vue({
            // el: '#app',
            data: {
                name: '山田 花子'
            },
            beforeCreate: function () {
                console.log('beforeCreate');
            },
            created: function () {
                console.log('created');
            },
            beforeMount: function () {
                console.log('beforeMount');
            },
            mounted: function () {
                console.log('mounted');
            },
            beforeUpdate: function () {
                console.log('beforeUpdate');
            },
            updated: function () {
                console.log('updated');
            },
            beforeDestroy: function () {
                console.log('beforeDestroy');
            },
            destroyed: function () {
                console.log('destroyed');
            },
            methods: {
                destroy: function () {
                    this.$destroy();
                }
            }
        })

        setTimeout(() => {
            vm.$mount('#app')
        }, 3000);
    </script>
</body>

destroyの動きについて
destroyはVueインスタンスを破壊するものであるが、実際にdestroyを行うと以下の動画のようにVueの機能(ここではクリックイベントを発火しnameを書き換え、それがリアクティブに反映される)が動かない事が確認できる。
ezgif.com-gif-maker (2).gif

Vue.jsの勉強メモ一覧記事へのリンク

Vue.jsについて勉強した際に書いた勉強メモ記事のリンクを集約した記事。

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?