ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
Vue.js のライフサイクル全体図
| フェーズ | Vue 2 フック | Vue 3 フック (Composition API) | タイミング |
|---|---|---|---|
| 1. 生成前 | beforeCreate | setup() | data / props / methods 未準備 |
| 2. 生成後 | created | setup() | data / props 利用可、DOM はまだない |
| 3. マウント前 | beforeMount | onBeforeMount | テンプレートのコンパイル直後、DOM 挿入前 |
| 4. マウント後 | mounted | onMounted | DOM が利用可能 |
| 5. 更新前 | beforeUpdate | onBeforeUpdate | data 変更後、再描画前 |
| 6. 更新後 | updated | onUpdated | 再描画後 |
| 7. 破棄前 | beforeDestroy (Vue 2) / beforeUnmount (Vue 3) | onBeforeUnmount | コンポーネント破棄直前 |
| 8. 破棄後 | destroyed (Vue 2) / unmounted (Vue 3) | onUnmounted | コンポーネント破棄後 |
Vue 2 の Options API 例
export default {
data() {
return { message: "Hello" };
},
beforeCreate() {
console.log("beforeCreate: data はまだ未定義", this.message); // undefined
},
created() {
console.log("created: data 利用可", this.message); // "Hello"
// API 呼び出しによく使われる
this.fetchData();
},
beforeMount() {
console.log("beforeMount: DOM 挿入直前");
},
mounted() {
console.log("mounted: DOM 利用可");
// jQuery プラグイン初期化や、子要素のサイズ取得
const elem = this.$refs.myDiv;
const rect = elem.getBoundingClientRect();
// DOM イベントリスナー
window.addEventListener("resize", this.handleResize);
},
beforeUpdate() {
console.log("beforeUpdate: data 変更直後、DOM 反映前");
},
updated() {
console.log("updated: DOM 反映済み");
},
beforeDestroy() { // Vue 3 では beforeUnmount
console.log("beforeDestroy: 後片付け");
window.removeEventListener("resize", this.handleResize);
},
destroyed() { // Vue 3 では unmounted
console.log("destroyed");
},
methods: {
async fetchData() {
const res = await fetch("/api/data");
this.message = await res.json();
},
handleResize() { /* ... */ }
}
};
Vue 3 の Composition API 例
主要フックの使い分け
created(Vue 2) / setup(Vue 3)
- data / props にアクセス可
- API 呼び出し(初期データ取得)
- DOM はまだないので $refs はアクセス不可
mounted / onMounted
- DOM が完成、$refs アクセス可
- サードパーティライブラリの初期化(jQuery プラグイン、Chart.js 等)
- 子要素のサイズ計算
- DOM イベントリスナー追加
updated / onUpdated
- data 変更 → DOM 再描画後に呼ばれる
- 注意: ここで data を変更すると無限ループ
- 使用例: チャートの再描画、スクロール位置調整
beforeUnmount / onBeforeUnmount
- イベントリスナー削除
- setInterval / setTimeout のクリア
- WebSocket クローズ
API 呼び出しは created か mounted か?
初期データの取得はどちらでも動くが、推奨は:
- created を推奨: DOM 描画前に開始できる、ローディングが速く感じる
- mounted が必要なケース: API レスポンスを DOM 要素のサイズ計算等に使う場合
// 推奨パターン (created)
created() {
this.loading = true;
this.fetchData().finally(() => this.loading = false);
}
// Vue 3
async function setup() {
const loading = ref(true);
try {
await fetchData();
} finally {
loading.value = false;
}
return { loading };
}
Vue 2 → Vue 3 移行マッピング
| Vue 2 | Vue 3 (Options API) | Vue 3 (Composition API) |
|---|---|---|
beforeCreate | beforeCreate | setup の最初 |
created | created | setup の中 |
beforeMount | beforeMount | onBeforeMount |
mounted | mounted | onMounted |
beforeUpdate | beforeUpdate | onBeforeUpdate |
updated | updated | onUpdated |
beforeDestroy | beforeUnmount | onBeforeUnmount |
destroyed | unmounted | onUnmounted |
activated (keep-alive) | activated | onActivated |
deactivated | deactivated | onDeactivated |
errorCaptured | errorCaptured | onErrorCaptured |
nextTick との組み合わせ
DOM 反映完了直後に処理を入れたい場合は nextTick:
// Vue 2
mounted() {
this.message = "Updated";
this.$nextTick(() => {
console.log("DOM 反映完了");
// 高さ計算等
});
}
// Vue 3
import { nextTick } from "vue";
onMounted(async () => {
message.value = "Updated";
await nextTick();
console.log("DOM 反映完了");
});
関連記事
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 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
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?