Vueコンポーネント化開発の知識点について詳しく説明します。
4900 ワード
グローバルコンポーネント登録
コンポーネントテンプレートの内容は必ず単一のルート要素でなければなりません。
コンポーネントテンプレートの内容はテンプレート文字列とすることができます。
グローバルコンポーネントはグローバルコンポーネントをネスティングできます。
コンポーネントの命名方法
部分的に登録されたコンポーネントは親のコンポーネントだけで使用できます。
コンポーネント内部は、プロpsを通して渡された値を受信する。は、propsではラクダのピークの形を使用し、テンプレートでは短い横線の形を使用する必要があります。)大文字と小文字に敏感でない 文字列にはこの制限はありません。
プロモーションタイプ
サブアセンブリは、カスタムイベントを通じて親コンポーネントに値$emit()を送る。
個別のイベントセンター管理コンポーネント間の通信
Vue.component('first-component', {
data: function () {
return {
count: 0
}
},
template: '<button @click="count++">{{ count }}</button>'
})
dataは関数でなければなりません。コンポーネントテンプレートの内容は必ず単一のルート要素でなければなりません。
コンポーネントテンプレートの内容はテンプレート文字列とすることができます。
グローバルコンポーネントはグローバルコンポーネントをネスティングできます。
コンポーネントの命名方法
Vue.component('first-component', {/* .... */})
// , template
Vue.component('firstComponent', {/* .... */})
ローカルコンポーネント登録部分的に登録されたコンポーネントは親のコンポーネントだけで使用できます。
var vm = new Vue({
components: {
'hello-world': {
data: function () {
return {
msg: 'hello world'
}
},
template: '<div>{{ msg }}</div>'
}
}
})
props転送データ原則:一方向データストリームコンポーネント内部は、プロpsを通して渡された値を受信する。
Vue.component('son-com', {
props: ['msg', 'parentMsg']
template: '<div>{{msg + "---" + parentMsg}}</div>'
})
親コンポーネントは属性によって、値をサブアセンブリに渡す。
<son-com msg=" " :parent-msg="bind "></son-com>
props属性名規則
<div id="app">
<son-com
:str="pstr"
:num="pnum" <!-- v-bind -->
:boolean="pboolean"
:arr="parr"
:obj="pobj"
>
</son-com>
</div>
Vue.component('son-com', {
props: ['str', 'num', 'boolean', 'arr', 'obj'],
template: `
<div>
<div>{{ str }}</div>
<div>{{ num }}</div>
<div>{{ boolean }}</div>
<ul>
<li :key="index" v-for="(item, index) in arr">{{ item }}</li>
</ul>
<div>
<span>{{ obj.name }}</span>
<span>{{ obj.age }}</span>
</div>
</div>
`
})
var vm = new Vue({
el: '#app',
data: {
pstr: 'hello Vue',
pnum: 12,
pboolean: true,
parr: ['apple', 'banner', 'orange'],
pobj: {name: 'zs', age: 22}
}
})
サブコンポーネントは親コンポーネントに値を送る。サブアセンブリは、カスタムイベントを通じて親コンポーネントに値$emit()を送る。
Vue.component('son-com', {
template: `
<div>
<button @click="$emit('parent')"> </button>
<button @click="$emit('parent', 10)"> </button>
</div>
`
})
親コンポーネントモニタサブアセンブリイベント
<div id="app">
<div> </div>
<son-com @parent="handle"></son-com>
<!-- $event-->
<son-com @parent="handle($event)"></son-com>
</div>
var vm = new Vue({
el: '#app',
data: {
font: 10
},
methods: {
handle: function (val) {
this.font += 5
this.font += val // val
}
},
})
親子以外のコンポーネント個別のイベントセンター管理コンポーネント間の通信
//
var hub = new Vue()
// mounted
hub.$on('eventName', fn)
hub.$off('eventName') //
// methods
hub.$emit('eventName', param)
セットスロット
<tmp-com>
<!-- -->
<p slot="header"> </p>
<div> </div>
<!-- -->
<template slot="footer">
<p> </p>
<p> </p>
</template>
</tmp-com>
Vue.component('tmp-com', {
template: `
<div>
<header>
<slot name="header"></slot>
</header>
<div>
<slot></slot>
</div>
<footer>
<slot name="footer"></slot>
</footer>
</div>
`
})
以上で、コンポーネント開発の知識についてのVueの詳細な記事を紹介します。Vueコンポーネントの開発に関する詳細は、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。