🦖

Vue3のComposition APIに関して

2023/04/27に公開

Vue3では、Composition APIと呼ばれる新しいAPIが導入され、より柔軟で再利用可能なコードを書くことができるようになりました。この記事では、Vue3のComposition APIの主要な関数であるref、reactive、computed、onMounted、onBeforeMount、onUpdated、onUnmounted、getCurrentInstance、toRawに焦点を当て、具体的な使用例確認します。

1. ref関数

ref関数は、リアクティブなデータを作成するために使用されます。リアクティブデータは、Vueのデータとビューを結びつけるために必要です。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    // ref関数を使用してcount変数をリアクティブデータにする
    const count = ref(0);

    // countの値を1増やす関数
    const increment = () => {
      count.value++;
    };

    // countとincrementを返す
    return {
      count,
      increment,
    };
  },
};
</script>

2. reactive関数

reactive関数は、オブジェクトをリアクティブデータに変換するために使用されます。オブジェクト内のプロパティの変更は自動的にトラッキングされ、ビューに反映されます。

<template>
  <div>
    <p>Name: {{ user.name }}</p>
    <p>Age: {{ user.age }}</p>
  </div>
</template>

<script>
import { reactive } from 'vue';

export default {
  setup() {
    // reactive関数を使用してuserオブジェクトをリアクティブデータにする
    const user = reactive({
      name: 'John',
      age: 30,
    });

    // userを返す
    return {
      user,
    };
  },
};
</script>

3. computed関数

computed関数は、算出プロパティを作成するために使用されます。算出プロパティは、他のリアクティブデータの変更に応じて自動的に再計算されます。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <p>Double Count: {{ doubleCount }}</p>
  </div>
</template>

<script>
import { ref, computed } from 'vue';

export default {
  setup() {
    const count = ref(0);

    // computed関数を使用してcountの2倍を算出プロパティとして作成する
    const doubleCount = computed(() => count.value * 2);

    return {
      count,
      doubleCount,
    };
  },
};
</script>

4. ライフサイクルフック

ライフサイクルフックは、Vueコンポーネントのライフサイクルイベントに対応する関数を定義するために使用されます。

<script>
import { onMounted, onBeforeMount, onUpdated, onUnmounted } from 'vue';

export default {
  setup() {
    // コンポーネントがマウントされる前に実行される
    onBeforeMount(() => {
      console.log('Component about to be mounted.');
    });

    // コンポーネントがマウントされた後に実行される
    onMounted(() => {
      console.log('Component mounted.');
    });

    // コンポーネントが更新された後に実行される
    onUpdated(() => {
      console.log('Component updated.');
    });

    // コンポーネントがアンマウントされる前に実行される
    onUnmounted(() => {
      console.log('Component about to be unmounted.');
    });
  },
};
</script>

5. getCurrentInstance関数

getCurrentInstance関数は、現在のコンポーネントインスタンスを取得するために使用されます。これを使って、コンポーネントの内部からコンポーネント自体にアクセスすることができます。

<template>
  <div>
    <p>Count: {{ count }}</p>
  </div>
</template>

<script>
import { ref, getCurrentInstance } from 'vue';

export default {
  setup() {
    const instance = getCurrentInstance();
    const count = ref(0);

    // コンポーネントのロジック内でコンポーネントにアクセスする
    instance.props = {
      count,
    };

    return {
      count,
    };
  },
};
</script>

6. toRaw関数

toRaw関数は、リアクティブデータを元の非リアクティブなオブジェクトに変換するために使用されます。リアクティブなオブジェクトのプロキシが不要な場合、toRaw関数を使って非リアクティブなオブジェクトにアクセスすることができます。

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="reset">Reset</button>
  </div>
</template>

<script>
import { ref, toRaw } from 'vue';

export default {
  setup() {
    const count = ref(0);

    const reset = () => {
      // リアクティブデータを非リアクティブなオブジェクトに変換する
      const rawCount = toRaw(count);
      rawCount = 0; // プロキシが不要な場合は、非リアクティブなオブジェクトにアクセスして値を設定する
    };

    return {
      count,
      reset,
    };
  },
};
</script>

まとめ

本記事では、Vue3のComposition APIの主要な関数であるref、reactive、computed、onMounted、onBeforeMount、onUpdated、onUnmounted、getCurrentInstance、toRawに焦点を当て、具体的な使用例を確認しました。みなさんも良いVueLifeを!!

参考資料

https://ja.vuejs.org/guide/extras/composition-api-faq.html

Discussion