Vue組件中的父子組件使用
Vue組件中的父子組件
父組件向子組件傳值
- 父組件通過(guò)屬性綁定(v-bind:)的形式, 把需要傳遞給子組件的數(shù)據(jù),以屬性綁定的形式,傳遞到子組件內(nèi)部,供子組件使用
- 子組件需要在內(nèi)部定義 props 屬性。例如 props : [ ‘parentmsg’ ] 把父組件傳遞過(guò)來(lái)的 parentmsg 屬性,先在 props 數(shù)組中,定義一下,這樣,才能使用這個(gè)數(shù)據(jù)
- 所有 props 中的數(shù)據(jù)都是通過(guò)父組件傳遞過(guò)來(lái)的
示例1:
<div id="app" style="width: 800px;height: 100px;background: red;"> <!-- 父組件,可以在引用子組件的時(shí)候, 通過(guò)屬性綁定(v-bind:)的形式, 把需要傳遞給子組件的數(shù)據(jù),以屬性綁定的形式,傳遞到子組件內(nèi)部,供子組件使用--> <com1 v-bind:parentmsg="msg" style="width: 500px;height: 50px;background: green;"></com1> </div> <script> new Vue({ el:'#app', data:{ msg: '父組件中的數(shù)據(jù)' }, components:{ com1:{ /* 注意: 子組件中的 data 數(shù)據(jù),并不是通過(guò) 父組件傳遞過(guò)來(lái)的, 而是子組件自身私有的,比如: 子組件通過(guò) Ajax,請(qǐng)求回來(lái)的數(shù)據(jù),都可以 放到 data 身上; data 上的數(shù)據(jù),都是可讀可寫的; */ data(){ return { title: '123', content: 'qqq' } }, template: '<h1 @click="change">這是子組件:{{ parentmsg }}</h1>', /* 注意: 組件中的 所有 props 中的數(shù)據(jù),都是通過(guò) 父組件傳遞給子組件的 把父組件傳遞過(guò)來(lái)的 parentmsg 屬性,先在 props 數(shù)組中定義一下,這樣 才能使用這個(gè)數(shù)據(jù) */ props: ['parentmsg'], methods:{ change: function(){ this.parentmsg = '被修改了' } } } } }); </script>
示例2:
<div id="app"> <input type="text" v-model="item"> <div style="width: 200px;height: 150px;background: red;"> <test :tt="item"></test> </div> </div> <template id="temp"> <div> <p v-text="tt"></p> </div> </template> <script> Vue.component("test",{ props:['tt'], template:'#temp' }) new Vue({ el:'#app', data:{ item:'ABCD' } }); </script>
子組件向父組件傳值
子組件向父組件傳值是通過(guò)方法的方式
示例:
<div id="app" style="width: 500px;height: 300px;background: red;"> <!-- 父組件向子組件傳遞方法使用的是事件綁定機(jī)制;v-on,當(dāng)我們自定義了 一個(gè) 事件屬性之后那么,子組件就能夠,通過(guò)某些方式,來(lái)調(diào)用傳遞進(jìn)去的這個(gè)方法了 --> <com2 @func="show"></com2> <p>{{ datamsgFormSon }}</p> </div> <template id="tmpl"> <div style="width: 300px;height: 200px;background: green;"> <h1>這是子組件</h1> <input type="button" value="是子組件中的按鈕" @click="myclick"> </div> </template> <script> // 定義了一個(gè)字面量類型的組件模板對(duì)象 var com2 = { template: '#tmpl', // 通過(guò)指定了一個(gè) Id, 表示說(shuō),要去加載這個(gè)指定 Id 的template 元素中的內(nèi)容,當(dāng)作組件的 HTML 結(jié)構(gòu) data() { return { sonmsg: { name: '大頭兒子', age: 6 } } }, methods: { myclick() { // 當(dāng)點(diǎn)擊子組件的按鈕的時(shí)候,通過(guò)$emit 拿到父組件傳遞過(guò)來(lái)的 func 方法 // emit 英文原意: 是觸發(fā),調(diào)用、發(fā)射的意思 this.$emit('func', this.sonmsg) } } } // 創(chuàng)建 Vue 實(shí)例,得到 ViewModel var vm = new Vue({ el: '#app', data: { datamsgFormSon: null }, methods: { show(data) { console.log('調(diào)用了父組件身上的 show 方法: --- ' + data) console.log(data.name); this.datamsgFormSon = data } }, components: { com2 //com2: com2 } }); </script>
Vue父子組件的生命周期
父子組件的生命周期是一個(gè)嵌套的過(guò)程
渲染的過(guò)程
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
子組件更新過(guò)程
父beforeUpdate->子beforeUpdate->子updated->父updated
父組件更新過(guò)程
父beforeUpdate->父updated
銷毀過(guò)程
父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)例初始化為渲染函數(shù)設(shè)置檢查源碼剖析
這篇文章主要為大家介紹了Vue實(shí)例初始化為渲染函數(shù)設(shè)置檢查源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Element?el-date-picker?日期選擇器的使用
本文主要介紹了Element?el-date-picker?日期選擇器的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能
這篇文章主要介紹了vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03vue+animation實(shí)現(xiàn)翻頁(yè)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了vue+animation實(shí)現(xiàn)翻頁(yè)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06Vue使用Multiavatarjs生成自定義隨機(jī)頭像的案例
這篇文章給大家介紹了Vue項(xiàng)目中使用Multiavatarjs生成自定義隨機(jī)頭像的案例,文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10Vue中使用?Aplayer?和?Metingjs?添加音樂(lè)插件的方式
這篇文章主要介紹了Vue中使用?Aplayer?和?Metingjs?添加音樂(lè)插件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Vue 電商后臺(tái)管理項(xiàng)目階段性總結(jié)(推薦)
這篇文章主要介紹了Vue 電商后臺(tái)管理項(xiàng)目階段性總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08vue 3 中watch 和watchEffect 的新用法
本篇文章主要通過(guò) Options API 和 Composition API 對(duì)比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對(duì)大家有所幫助2021-11-11