<KeepAlive> コンポーネントのインスタンスをキャッシュする
最終更新:2026-10-22
<KeepAlive> コンポーネントのインスタンスをキャッシュする
| グループ | ビルトイン |
|---|---|
| 種類 | コンポーネント・要素 |
| スコープ | テンプレート |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
<KeepAlive include="TabA,TabB" :max="10">
<component :is="currentTab"></component>
</KeepAlive>
⚙️ 引数
| props | include / exclude(名前または正規表現)/ max(最大キャッシュ数。超えると最も使われていないものから破棄) |
|---|
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
Type in tab A, switch away and back — the text remains.
💡 ポイント
💡 ヒント activated / deactivated フックと組み合わせて「再入場時に更新、離脱時に一時停止」を実現します。
ℹ️ 補足 max は LRU 方式で破棄します。上限を超えると最も長くアクセスされていないインスタンスから破棄されます。
⚠️ 注意 キャッシュされるのはインスタンスと状態(タイマーを含む)です。非アクティブなページを長くキャッシュするとメモリを占めるため、max で上限を設定してください。
🏷️ 関連ビルトイン
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q v-show との違いは?
A v-show は DOM を隠して残すだけです。KeepAlive はコンポーネントのインスタンス全体(状態と副作用を含む)をキャッシュします。
Q include はどう書きますか?
A カンマ区切りのコンポーネント名か正規表現を指定します(:include="/Tab/" など)。マッチ対象はコンポーネントの name です。
Q キャッシュはずっと残りますか?
A デフォルトでは上限はありません。:max で制御するか、include / exclude のホワイトリストを使ってください。