Vue.js コンポーネント
コンポーネント(Component)は Vue.js の最も強力な機能の 1 つです。
コンポーネントは HTML 要素を拡張し、再利用可能なコードをカプセル化できます。
コンポーネントシステムにより、独立した再利用可能な小さなコンポーネントを使って大規模なアプリケーションを構築できます。ほぼすべての種類のアプリケーションのインターフェースは、コンポーネントツリーとして抽象化できます:

グローバルコンポーネントを登録する構文形式は次のとおりです:
Vue.component(tagName, options)
tagName はコンポーネント名、options は設定オプションです。登録後、次の方法でコンポーネントを呼び出すことができます:
<tagName></tagName>
グローバルコンポーネント
すべてのインスタンスがグローバルコンポーネントを使用できます。
グローバルコンポーネントのインスタンス
簡単なグローバルコンポーネント サンプル を登録して、それを使用します:
試してみる »
ローカルコンポーネント
インスタンスオプションでローカルコンポーネントを登録することもできます。この場合、コンポーネントはこのインスタンス内でのみ使用できます:
ローカルコンポーネントのインスタンス
簡単なローカルコンポーネント サンプル を登録して、それを使用します:
試してみる »
Prop
prop は、子コンポーネントが親コンポーネントから渡されたデータを受け取るためのカスタム属性です。
親コンポーネントのデータは props を介して子コンポーネントに渡す必要があります。子コンポーネントは props オプションで明示的に "prop" を宣言する必要があります:
Prop インスタンス
試してみる »
動的 Prop
v-bind を使用して HTML 属性を式にバインドするのと同様に、v-bind を使用して props の値を親コンポーネントのデータに動的にバインドできます。親コンポーネントのデータが変化するたびに、その変化は子コンポーネントにも伝わります:
Prop インスタンス
試してみる »
次のインスタンスでは、v-bind ディレクティブを使用して todo を繰り返しの各コンポーネントに渡しています:
Prop インスタンス
試してみる »
注意: prop は単方向バインディングです。親コンポーネントの属性が変化すると、その変化は子コンポーネントに伝わりますが、逆方向には伝わりません。
Prop 検証
コンポーネントは props に検証要件を指定できます。
prop の検証方法をカスタマイズするには、props の値に文字列配列ではなく、検証要件を持つオブジェクトを指定できます。例:
Vue.component('my-component', {
props: {
// 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
propA: Number,
// 多个可能的类型
propB: [String, Number],
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: Object,
// 对象或数组默认值必须从一个工厂函数获取
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
}
}
})
prop の検証に失敗した場合、(開発環境ビルドバージョンの)Vue はコンソールに警告を出力します。
type には次のネイティブコンストラクタを指定できます:
StringNumberBooleanArrayObjectDateFunctionSymbol
type にはカスタムコンストラクタを指定することもでき、instanceof で検出されます。
その他の拡張