ref() リアクティブな参照を作成する

最終更新:2026-10-22

ref() リアクティブな参照を作成する

ref() は任意の値をリアクティブなオブジェクトで包み、.value を通してアクセスします。プリミティブ型(文字列・数値・真偽値)や、丸ごと置き換えたい値を保持するための方法です。

グループリアクティビティ: 基本
種類API
スコープコンポーネント内
Vue バージョン3.0+
SSR 対応対応

📝 構文

import { ref } from "vue"

const count = ref(0)
count.value++          // スクリプト内では .value で読み書き
template: {{ count }}  // テンプレート内では自動でアンラップ

⚙️ 引数

value任意の型の初期値。省略した場合は undefined になります

戻り値:.value プロパティを持つリアクティブなオブジェクト(Ref)

▶ 例

以下のコードを編集して結果を確認しましょう:

出力:

The page shows 'Clicked 0 times'; each click increments the number.

💡 ポイント

⚠️ 注意 スクリプトコード内では必ず count.value と書きます。count++ と書くと変数が新しい数値に束縛し直され、リアクティビティが失われます。
💡 ヒント setup から ref を返すと、テンプレート内では自動的にアンラップされます。{{ count.value }} ではなく {{ count }} と書きましょう。
ℹ️ 補足 値を丸ごと置き換える場合は ref を使います。深くネストしたオブジェクトをリアクティブにしたい場合は reactive() が適しています。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q なぜ .value を省略できないのですか?
A JavaScript はプリミティブ型の読み書きを追跡できないため、getter/setter を持つラッパーオブジェクトでアクセスを捕捉する必要があります。そのラッパーのプロパティが .value です。
Q ref の中にオブジェクトを入れるとリアクティビティが失われますか?
A 失われません。ref(obj) は内部でオブジェクトを深く Proxy で包むため、.value.foo 経由の変更でも更新がトリガーされます。
Q ref と reactive はそれぞれいつ使うべきですか?
A デフォルトでは ref を推奨します(任意の型を扱え、丸ごと置き換えでき、分割代入してもリアクティビティが保たれます)。reactive はオブジェクトにしか使えず、分割代入するとリアクティビティが失われます。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%