Vue
VueのComputedを使う方法(算出プロパティ)
VueのComputedを使う方法(算出プロパティ)について解説します
PR
算出プロパティとは?
単純に計算するときに使う機能と考えて良いです。
Vue の表示を書く template 内で、計算結果や文字列結合された結果を表示したい時に、
テンプレートの中にロジック的なことを詰め込むと、読みづらくなります。
計算や、文字の結合のロジックは Computed に書き、表示のところはその結果の関数を書きましょう、というのが算出プロパティです。
computed(算出プロパティ)を使うと
<template>
<div>{{ sumAB }}</div>
</template>
<script setup>
import { ref, computed } from "vue"
const a = ref(1)
const b = ref(2)
const sumAB = computed(() => {
return a.value + b.value
})
</script>computed(算出プロパティ)を使わない
<template>
<div>{{ a + b }}</div>
</template>
<script setup>
import { ref } from "vue"
const a = ref(1)
const b = ref(2)
</script>computed を使わないと複雑な計算の ときごちゃごちゃする
例えば a+bが3のとき「3だよ」と出力し、それ以外の時「違うよ」と出力 ロジックを書いてみましょう。
const result = computed(() => {
const sumAB = a.value + b.value
if (sumAB === 3) {
return "3だよ"
} else {
return "違うよ"
}
})今回の例だと1行で書く方法もあるのでアレなのですが、if 文などを使って条件によって出力が変わる時を考えると、この computed を使わないと表示がごちゃごちゃしてしまうことが分かります。
computed を使う方法
Vue 3(setup)を使う時
<template>
<div>{{ result }}</div>
</template>
<script setup>
import { ref, computed } from "vue"
const a = ref(1)
const b = ref(2)
const result = computed(() => {
const sumAB = a.value + b.value
if (sumAB === 3) {
return "3だよ"
} else {
return "違うよ"
}
})
</script>必要なものを import
import { ref, computed } from "vue"変数の初期値(リアクティブ)を定義
const a = ref(1)
const b = ref(2)computed を使う
resultが関数名。
returnされるものが最終的に出力される結果です。
const result = computed(() => {
const sumAB = a.value + b.value
if (sumAB === 3) {
return "3だよ"
} else {
return "違うよ"
}
})表示する
<div>{{ result }}</div>Vue 2 のとき
Vue 2 のときはこのように書きます。
<template>
<div>{{ result }}</div>
</template>
<script>
export default {
data() {
return {
a: 1,
b: 2,
}
},
computed: {
result() {
const sumAB = a.value + b.value
if (sumAB === 3) {
return "3だよ"
} else {
return "違うよ"
}
},
},
}
</script>