data コンポーネントの状態
最終更新:2026-10-22
data コンポーネントの状態
data オプションは、オブジェクトを返す関数としてコンポーネントのリアクティブな状態を宣言します。これにより、各インスタンスが独立したデータのコピーを持ちます。
| グループ | オプション: 状態 |
|---|---|
| 種類 | オプション |
| スコープ | コンポーネント内 |
| Vue バージョン | 3.0+ |
| SSR 対応 | 対応 |
📝 構文
export default {
data() {
return { count: 0, user: { name: "Ana" } }
}
}
⚙️ 引数
| value | 引数なし:初期データを返す関数(オブジェクトはルートインスタンスのみ許可) |
|---|
戻り値:返されたフィールドはリアクティブになり、テンプレート内で名前で直接使われます
▶ 例
以下のコードを編集して結果を確認しましょう:
出力:
Shows 'Count: 0'; clicking increments it.
💡 ポイント
⚠️ 注意 必ず関数にしてください。オブジェクトを直接書くと複数インスタンス間で同じデータが共有され、データ漏れのバグの原因になります。
ℹ️ 補足 返すオブジェクトのすべてのフィールドは、ネストされたオブジェクトや配列も含めて深くリアクティブになります。
💡 ヒント _ や $ で始まるキーはインスタンスに公開されません(内部用に予約されています)。
🏷️ 関連状態
💡 関連ケース
関連ケースは近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q なぜ data は関数でなければならないのですか?
A コンポーネントは何度もインスタンス化されるため、関数によって毎回新しいオブジェクトを返し、インスタンス間でデータが分離されます。
Q data の中で props を参照できますか?
A 直接の依存は信頼できません。props から派生させるには computed を使ってください(prop が変わっても data は自動更新されません)。
Q テンプレートで this は必要ですか?
A 不要です。テンプレートではフィールド名を直接書き、スクリプトのロジック内でのみ this.count のように使います。