LoginSignup
10
17

More than 3 years have passed since last update.

Vue3.0から読みやすいコードに!? Composition APIの概要紹介

Posted at

はじめに

今回は新しく導入されたComposition APIについて解説します!

動画でもコード付きで解説してるので、よろしければご視聴お願いします!

【YouTube動画】 Composition APIやsetup関数の使い方を一緒にみていきましょう!
Composition APIやsetup関数の使い方を一緒にみていきましょう!

Vue 2系と3系の書き方の違い

Vue2系でコンポネントを作るとき、以下のように書いてましたね。
定義場所と使う場所が離れているため、コードジャンプできないと、読むの辛いですね (できても見辛いですが...)。

export default {
  components: { RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
  props: {
    user: { type: String }
  },
  data () {
    return {
      repositories: [],
      filters: { ... },
      searchQuery: ''
    }
  },
  computed: {
    filteredRepositories () { ... },
    repositoriesMatchingSearchQuery () { ... },
  },
  watch: {
    user: 'getUserRepositories'
  },
  methods: {
    getUserRepositories () {
      // using `this.user` to fetch user repositories
    },
    updateFilters () { ... },
  },
  mounted () {
    this.getUserRepositories()
  }
}

これがVue3系からこうなります!
dataとかがなくなった代わりに、setup関数が追加されていますね!

setup関数内に変数や関数を定義し、mountedやmethodsに対応するものを書いていきます。
setup関数のおかげで、同じデータを扱う処理をまとめることができます!!

また、setup関数の最後で定数などを返すと、template内で扱うことができます。

export default {
  components: { RepositoriesFilters, RepositoriesSortBy, RepositoriesList },
  props: {
    user: { type: String }
  },
  setup(props) {
    const test = ...
    console.log(props) // { user: '' }

    // setup関数内で定義したものを外 (<template>など) で使えるようにreturn
    return { test, ... }
  }
  ...
}

ビジュアルにまとめると以下のようになります。
左が今までのVue.jsの書き方で、右がComposition APIを使った場合の書き方です。
この画像では、アクセスするデータごとに色分けしています。

比較画像 Vue Composition API #code-organization
対比画像.png

dataはどこにいった?

dataを使わない代わりに、refやreactiveが導入されました!

例えば、以下のように使います。

import { ref } from 'vue'

...
setup(props) {
  const counter = ref(0)

  console.log(counter) // { value: 0 }
  console.log(counter.value) // 0

  counter.value++
  console.log(counter.value) // 1
}

データを複数まとめたい場合はreactiveを使います。

import { reactive } from 'vue'

...
setup(props) {
  const counters = reactive({ x: 0, y: 0 })
}

ライフサイクル周りのメソッドは?

mountedなどのライフサイクル周りのメソッドはonMounted()などを読み込んで使います。

import { onMounted } from 'vue'
...

setup (props) {
  const getUserRepositories = ...

  onMounted(getUserRepositories)
  ...
}

まとめ

今回はVue 3.0のComposition APIについて紹介しました!
今までの書き方でも一応エラーにはならないですが、より読みやすいComposition APIを使ったか書き方に挑戦するのも良いかもしれませんね。

twitteryoutubeでのコメントもお待ちしています!

10
17
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
10
17