useAttrs() 透過属性を取得する

最終更新:2026-10-22

useAttrs() 透過属性を取得する

useAttrs() は、props / emits として宣言されていない透過属性(class、id、イベントリスナーなど)を返します。手動で配布するのに使います。

グループテンプレートとヘルパー
種類API
スコープコンポーネント内
Vue バージョン3.0+
SSR 対応対応

📝 構文

const attrs = useAttrs()
// テンプレート:<div v-bind="attrs"></div>

戻り値:リアクティブなオブジェクト(後続の変化には反応しないが、最新値は読める)

▶ 例

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

出力:

The button carries both classes and the data attribute.

💡 ポイント

ℹ️ 補足 props を宣言していないとき、透過属性はデフォルトで自動的にルート要素に落ちます。内部の非ルート要素に落としたいときにこのフックを使います。
⚠️ 注意 attrs を変更しようとしないでください。読み取り専用なので、変更は警告が出るだけで反映されません。
💡 ヒント inheritAttrs: false と組み合わせます。自動透過をオフにしてから、手動で正確に配布します。
関連ケースは近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q $attrs との違いは?
A Composition API 版で機能は同じです。$attrs はテンプレート / インスタンス上の書き方です。
Q attrs は親コンポーネントに合わせて更新されますか?
A 最新の値は同期されますが、オブジェクト自体は深くリアクティブではありません(内部の値は依存追跡をトリガーしません)。
Q 手動での配布が必要なのはどんなときですか?
A コンポーネントに複数のルート要素があるとき、または特定の内部要素に属性を置きたいときです。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%