ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
computed とは
Vue.js の computed(算出プロパティ)は、data の値から計算される派生値を宣言的に書く仕組みです。テンプレートに複雑な式を書かずに済み、結果はキャッシュされるため何度参照しても再計算されません。
data との違い
| data | computed | |
|---|---|---|
| 定義 | 値そのもの | 計算ロジックを返す関数 |
| 書き換え | 直接代入 (this.x = 1) | 原則 read-only(setter 定義で write 可) |
| キャッシュ | なし | 依存 data が変わるまでキャッシュ |
| 用途 | UI 状態 / 入力値 | 派生値・計算結果 |
実装例(Options API / Vue 2/3 共通)
value: {{ value }}
computed_value: {{ computedValue }}
doubled: {{ doubled }}
このコードでは value が変わると doubled が再計算されますが、テンプレートで何度 {{ doubled }} を参照しても 1 回しか実行されません。
methods との違い
同じ計算は methods でも書けますが、methods は呼び出すたびに毎回実行されます:
{{ doubledMethod() }}
{{ doubledMethod() }}
{{ doubledComputed }}
{{ doubledComputed }}
| computed | methods | |
|---|---|---|
| 呼び方 | プロパティ {{ x }} | 関数 {{ x() }} |
| キャッシュ | あり(依存が変わるまで) | なし |
| 引数 | 不可 | 可能 |
| 用途 | 派生値の表示 | イベントハンドラ / 引数付き計算 |
setter 付き computed(双方向バインディング)
computed は通常 read-only ですが、setter を定義すれば書き換えも可能:
export default {
data() {
return { firstName: '山田', lastName: '太郎' };
},
computed: {
fullName: {
// 読み取り時
get() {
return this.firstName + ' ' + this.lastName;
},
// 書き込み時
set(newValue) {
const parts = newValue.split(' ');
this.firstName = parts[0];
this.lastName = parts[1] || '';
}
}
}
};
// テンプレート:
// → 入力すると setter が呼ばれて firstName / lastName が更新される
Composition API での書き方(Vue 3)
import { ref, computed } from 'vue';
export default {
setup() {
const value = ref(1);
// computed
const doubled = computed(() => value.value * 2);
// setter 付き
const fullName = computed({
get: () => firstName.value + ' ' + lastName.value,
set: (val) => {
[firstName.value, lastName.value] = val.split(' ');
}
});
return { value, doubled, fullName };
}
};
watch との使い分け
- computed: 「A から B を導く」関係。同期的で、テンプレートでそのまま使う値
- watch: 「A が変わったら副作用を起こす」。非同期処理 / API 呼び出し / DOM 操作などに使う
export default {
data() {
return { keyword: '', results: [] };
},
computed: {
// 純粋な計算(同期)
keywordUpper() { return this.keyword.toUpperCase(); }
},
watch: {
// 副作用がある処理(非同期)
keyword(newVal) {
this.results = [];
this.$axios.get('/api/search?q=' + newVal).then(res => {
this.results = res.data;
});
}
}
};
パフォーマンスを意識する
- computed は依存追跡が自動: 内部で使った data だけが依存になる
- 重い処理に最適: フィルタリング・ソート・集計など
- テンプレートで複雑な式を避ける:
{{ users.filter(...).map(...) }}ではなく computed に切り出す - computed のチェーン: ある computed が別の computed を参照しても OK
- v-for と組み合わせ: ソート済みリストや絞り込み済みリストを computed で返すパターンが王道
よくあるハマりどころ
- computed が更新されない: 配列の push / オブジェクトのプロパティ追加は Vue 2 ではリアクティブにならない →
Vue.set()または Vue 3 で解消 - 非同期処理を入れない: computed は同期で値を返すべき。await を使うなら methods + watch
- this.fullName = 'xxx': setter なしで代入するとエラー(Vue 2)または無視(Vue 3)
- 引数を取りたい: computed は引数を取れない → 関数を返す computed か methods を使う
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- インストール(ファイルのダウンロード)
- npmを使用したプロジェクトの作成
- for 繰り返し処理
- ifの条件分岐とtemplateを用いたグループ化
- クリック時のイベント処理(on:click)
- modelとdata フォーム入力値とDOMへの即時反映
- computed(算出プロパティ)と使い方とdataとの違い
- ライフサイクルフック(created / mounted / updated / destroyedの使い方)
- $nextTickの使い方(ライフサイクルフック)
- メソッドの定義方法
- エラー一覧
- ルーティング設定
- aリンクの貼り方と動的URLの作成
- Mixinを利用した共通処理の記述方法
- v-bindによるデータ連携
- ヘッダー/フッターの共通コンポーネント
- ナビゲーションの現在ページをハイライトする方法
- 画面サイズの取得方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?