Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解
全局組件注冊(cè)
Vue.component('first-component', {
data: function () {
return {
count: 0
}
},
template: '<button @click="count++">{{ count }}</button>'
})
data 必須是一個(gè)函數(shù)
組件模板內(nèi)容必須是單個(gè)根元素
組件模板內(nèi)容可以是模板字符串
全局組件可以嵌套全局組件
組件命名方式
Vue.component('first-component', {/* .... */})
// 普通標(biāo)簽?zāi)0逯胁荒苁褂民劮? 只能在template中使用駝峰方式
Vue.component('firstComponent', {/* .... */})
局部組件注冊(cè)
局部注冊(cè)的組件只能在父組件中使用 ;
var vm = new Vue({
components: {
'hello-world': {
data: function () {
return {
msg: 'hello world'
}
},
template: '<div>{{ msg }}</div>'
}
}
})
props 傳遞數(shù)據(jù)原則 : 單向數(shù)據(jù)流
組件內(nèi)部通過(guò) props 接收傳遞過(guò)來(lái)的值
Vue.component('son-com', {
props: ['msg', 'parentMsg']
template: '<div>{{msg + "---" + parentMsg}}</div>'
})
父組件通過(guò)屬性將值傳遞給子組件
<son-com msg="父組件的值" :parent-msg="bind綁定的父組件的值"></son-com>
props 屬性名規(guī)則
- 在props中使用駝峰形式, 模板中需要使用短橫線的形式 ; html 對(duì)大小寫的不敏感的
- 字符串中沒(méi)有這個(gè)限制
props 傳遞類型
<div id="app"> <son-com :str="pstr" :num="pnum" <!-- 注意如果不用 v-bind 則獲取不到準(zhǔn)確的屬性值 --> :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}
}
})
子組件向父組件傳值
子組件通過(guò)自定義事件向父組件傳值 $emit()
Vue.component('son-com', {
template: `
<div>
<button @click="$emit('parent')">點(diǎn)擊放大父組件字體</button>
傳值從第二個(gè)參數(shù)開始
<button @click="$emit('parent', 10)">點(diǎn)擊放大父組件字體</button>
</div>
`
})
父組件監(jiān)聽子組件事件
<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 // 此時(shí)的val就是 子組件傳遞過(guò)來(lái)的值
}
},
})
非父子組件傳值
單獨(dú)的事件中心管理組件之間的通信
// 創(chuàng)建事件中心
var hub = new Vue()
// 在 mounted 中監(jiān)聽事件
hub.$on('eventName', fn)
hub.$off('eventName') // 銷毀事件
// 在 methods 中處理事件
hub.$emit('eventName', param)
組件插槽
<tmp-com> <!-- 只能匹配一個(gè)標(biāo)簽 --> <p slot="header">程序錯(cuò)誤</p> <div>我是沒(méi)有匹配的內(nèi)容</div> <!-- 可以匹配多個(gè)標(biāo)簽 --> <template slot="footer"> <p>匹配頁(yè)腳一次</p> <p>匹配頁(yè)腳兩次</p> </template> </tmp-com>
Vue.component('tmp-com', {
template: `
<div>
<header>
<slot name="header"></slot>
</header>
<div>
如果上面沒(méi)有匹配到對(duì)應(yīng)的標(biāo)簽就會(huì)展示默認(rèn)內(nèi)容
<slot></slot>
</div>
<footer>
<slot name="footer"></slot>
</footer>
</div>
`
})
到此這篇關(guān)于Vue關(guān)于組件化開發(fā)知識(shí)點(diǎn)詳解的文章就介紹到這了,更多相關(guān)Vue 組件化開發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue編寫的功能強(qiáng)大的swagger-ui頁(yè)面及使用方式
swagger是一種標(biāo)準(zhǔn)的數(shù)據(jù)格式的定義,對(duì)于不同語(yǔ)言進(jìn)行實(shí)現(xiàn)一些注解API式的東西,能快速生成這種描述restful格式的api信息的json串,本文給大家詳細(xì)介紹vue編寫的功能強(qiáng)大的swagger-ui頁(yè)面,感興趣的朋友跟隨小編一起看看吧2022-02-02
vue輸入框中輸完后光標(biāo)自動(dòng)跳到下一個(gè)輸入框中的實(shí)現(xiàn)方法
最近在工作中遇到了些問(wèn)題,總結(jié)下分享給同樣遇到這個(gè)問(wèn)題的朋友,這篇文章主要給大家介紹了關(guān)于vue輸入框中輸完后光標(biāo)自動(dòng)跳到下一個(gè)輸入框中的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-03-03
Vue通過(guò)echarts實(shí)現(xiàn)數(shù)據(jù)圖表化顯示
Echarts,它是一個(gè)與框架無(wú)關(guān)的 JS 圖表庫(kù),但是它基于Js,這樣很多框架都能使用它,例如Vue,估計(jì)IONIC也能用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
vue開發(fā)runtime core中的虛擬節(jié)點(diǎn)示例詳解
這篇文章主要為大家介紹了vue開發(fā)runtime core中的虛擬節(jié)點(diǎn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Vue通過(guò)路由實(shí)現(xiàn)頁(yè)面間參數(shù)的傳遞
這篇文章主要介紹了Vue通過(guò)路由實(shí)現(xiàn)頁(yè)面間參數(shù)的傳遞,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
vue中v-for循環(huán)數(shù)組,在方法中splice刪除數(shù)組元素踩坑記錄
這篇文章主要介紹了vue中v-for循環(huán)數(shù)組,在方法中splice刪除數(shù)組元素踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

