Vue組件中的父子組件使用
Vue組件中的父子組件
父組件向子組件傳值
- 父組件通過屬性綁定(v-bind:)的形式, 把需要傳遞給子組件的數(shù)據(jù),以屬性綁定的形式,傳遞到子組件內(nèi)部,供子組件使用
- 子組件需要在內(nèi)部定義 props 屬性。例如 props : [ ‘parentmsg’ ] 把父組件傳遞過來的 parentmsg 屬性,先在 props 數(shù)組中,定義一下,這樣,才能使用這個(gè)數(shù)據(jù)
- 所有 props 中的數(shù)據(jù)都是通過父組件傳遞過來的
示例1:
<div id="app" style="width: 800px;height: 100px;background: red;">
<!-- 父組件,可以在引用子組件的時(shí)候, 通過屬性綁定(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ù),并不是通過 父組件傳遞過來的,
而是子組件自身私有的,比如: 子組件通過 Ajax,請(qǐng)求回來的數(shù)據(jù),都可以
放到 data 身上;
data 上的數(shù)據(jù),都是可讀可寫的;
*/
data(){
return {
title: '123',
content: 'qqq'
}
},
template: '<h1 @click="change">這是子組件:{{ parentmsg }}</h1>',
/*
注意: 組件中的 所有 props 中的數(shù)據(jù),都是通過 父組件傳遞給子組件的
把父組件傳遞過來的 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>子組件向父組件傳值
子組件向父組件傳值是通過方法的方式
示例:
<div id="app" style="width: 500px;height: 300px;background: red;">
<!-- 父組件向子組件傳遞方法使用的是事件綁定機(jī)制;v-on,當(dāng)我們自定義了 一個(gè)
事件屬性之后那么,子組件就能夠,通過某些方式,來調(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', // 通過指定了一個(gè) Id, 表示說,要去加載這個(gè)指定 Id 的template 元素中的內(nèi)容,當(dāng)作組件的 HTML 結(jié)構(gòu)
data() {
return {
sonmsg: {
name: '大頭兒子',
age: 6
}
}
},
methods: {
myclick() {
// 當(dāng)點(diǎn)擊子組件的按鈕的時(shí)候,通過$emit 拿到父組件傳遞過來的 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è)嵌套的過程
渲染的過程
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
子組件更新過程
父beforeUpdate->子beforeUpdate->子updated->父updated
父組件更新過程
父beforeUpdate->父updated
銷毀過程
父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-08
Element?el-date-picker?日期選擇器的使用
本文主要介紹了Element?el-date-picker?日期選擇器的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能
這篇文章主要介紹了vue 實(shí)現(xiàn)剪裁圖片并上傳服務(wù)器功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-03-03
vue+animation實(shí)現(xiàn)翻頁(yè)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了vue+animation實(shí)現(xiàn)翻頁(yè)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06
Vue使用Multiavatarjs生成自定義隨機(jī)頭像的案例
這篇文章給大家介紹了Vue項(xiàng)目中使用Multiavatarjs生成自定義隨機(jī)頭像的案例,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-10-10
Vue中使用?Aplayer?和?Metingjs?添加音樂插件的方式
這篇文章主要介紹了Vue中使用?Aplayer?和?Metingjs?添加音樂插件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Vue 電商后臺(tái)管理項(xiàng)目階段性總結(jié)(推薦)
這篇文章主要介紹了Vue 電商后臺(tái)管理項(xiàng)目階段性總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
vue 3 中watch 和watchEffect 的新用法
本篇文章主要通過 Options API 和 Composition API 對(duì)比 watch 的使用方法,讓大家快速掌握 vue3 中 watch 新用法,需要的朋友可以參考一下哦,希望對(duì)大家有所幫助2021-11-11

