Vue關(guān)于組件化開(kāi)發(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ì)大小寫(xiě)的不敏感的
- 字符串中沒(méi)有這個(gè)限制
props 傳遞類(lèi)型
<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ù)開(kāi)始 <button @click="$emit('parent', 10)">點(diǎn)擊放大父組件字體</button> </div> ` })
父組件監(jiān)聽(tīng)子組件事件
<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)聽(tīng)事件 hub.$on('eventName', fn) hub.$off('eventName') // 銷(xiāo)毀事件 // 在 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)于組件化開(kāi)發(fā)知識(shí)點(diǎn)詳解的文章就介紹到這了,更多相關(guān)Vue 組件化開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-element內(nèi)table插入超鏈接a標(biāo)簽的使用
在Vue Element的table組件中插入超鏈接,可以使用<el-link>標(biāo)簽替代傳統(tǒng)的<a>標(biāo)簽,實(shí)現(xiàn)更加整潔的UI設(shè)計(jì),具體操作是替換原有的<span>標(biāo)簽,直接使用<el-link>進(jìn)行超鏈接的插入,使得鏈接樣式與Element UI保持一致2024-09-09Antd中單個(gè)DatePicker限定時(shí)間輸入范圍操作
這篇文章主要介紹了Antd中單個(gè)DatePicker限定時(shí)間輸入范圍操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10vue基礎(chǔ)知識(shí)--axios合并請(qǐng)求和slot
這篇文章主要介紹了vue中的axios和slot,文中代碼非常詳細(xì),對(duì)大家的工作學(xué)習(xí)有所幫助,感興趣的朋友可以參考下2020-06-06Vue3中內(nèi)置組件Teleport的基本使用與典型案例
Teleport是一種能夠?qū)⑽覀兊哪0逡苿?dòng)到DOM中Vue app之外的其他位置的技術(shù),下面這篇文章主要給大家介紹了關(guān)于Vue3中內(nèi)置組件Teleport的基本使用與典型案例的相關(guān)資料,需要的朋友可以參考下2023-04-04Vxe-Table開(kāi)發(fā)中的各種坑以及避坑指南
vxe-table是一個(gè)全功能的Vue表格,滿足絕大部分對(duì)Table的一切需求,與任意組件庫(kù)完美兼容,下面這篇文章主要給大家介紹了關(guān)于Vxe-Table開(kāi)發(fā)中各種坑以及避坑的相關(guān)資料,需要的朋友可以參考下2022-09-09使用vue-cli3打包dist路徑問(wèn)題修改打包配置
這篇文章主要介紹了使用vue-cli3打包dist路徑問(wèn)題修改打包配置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue+Element ui 根據(jù)后臺(tái)返回?cái)?shù)據(jù)設(shè)置動(dòng)態(tài)表頭操作
這篇文章主要介紹了Vue+Element ui 根據(jù)后臺(tái)返回?cái)?shù)據(jù)設(shè)置動(dòng)態(tài)表頭操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09vuejs2.0運(yùn)用原生js實(shí)現(xiàn)簡(jiǎn)單拖拽元素功能
這篇文章主要為大家詳細(xì)介紹了vuejs2.0運(yùn)用原生js實(shí)現(xiàn)簡(jiǎn)單拖拽元素功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12vue el-date-picker 開(kāi)始日期不能大于結(jié)束日期的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue el-date-picker 開(kāi)始日期不能大于結(jié)束日期的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01vue-cli的build的文件夾下沒(méi)有dev-server.js文件配置mock數(shù)據(jù)的方法
這篇文章主要介紹了vue-cli的build的文件夾下沒(méi)有dev-server.js文件配置mock數(shù)據(jù)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04