vue子組件如何獲取父組件的內(nèi)容(props屬性)
子組件如何獲取父組件的內(nèi)容
props屬性
組件實(shí)例的作用域是孤立的。這意味著不能并且不應(yīng)該在子組件的模板內(nèi)直接引用父組件的數(shù)據(jù)??梢允褂?props 把數(shù)據(jù)傳給子組件。
想要引用父組件需要:
<bbb v-bind:myMsg="msg"></bbb>//子組件將父組件的數(shù)據(jù)msg綁定到myMsg上
bbb:{
? ? props:{
? ? ? ? 'myMsg':String ?//綁定數(shù)據(jù)的類型
? ? }
}注:props也可表達(dá)成如下:props:['myMsg']
完整實(shí)例如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="example">
<aaa></aaa>
</div>
<template id="aaa">
<h1>{{msg}}</h1> //父組件
<bbb :my-msg="msg"></bbb> //子組件
</template>
<script>
window.onload=function(){
new Vue({
el: '#example',
data:{
},
components:{
aaa:{
data:function(){
return{
msg:'我是父組件的數(shù)據(jù)'
}
},
template:'#aaa',
components:{
bbb:{
props:{
'myMsg':String
},
template:'<h2>我是子組件-->{{myMsg}}</h2>'
}//當(dāng)html中使用my-msg時(shí),在js中需使用駝峰命名myMsg
}
}
}
})
}
</script>
</body>
</html>最后的結(jié)果如下圖:

vue父→子組件的props傳值
需求1
如果要將自定義屬性里的值傳遞給模板,可以使用props屬性:

寫法注意的地方:
1.props的大小寫:對(duì)于html里的短橫線命名,在vue里面要用小駝峰命名法(大駝峰命名介紹:第一個(gè)字母也是大寫);

2.template里必須有一個(gè)根目錄:

需求2
實(shí)際項(xiàng)目中我們經(jīng)常要將data里面的值傳遞給模板,操作如下:

思路:使用v-bind和data數(shù)據(jù)綁定,將值傳遞到組件的模板里的插值里.
另一個(gè)案例:
效果圖:

傳遞的過(guò)程總結(jié):準(zhǔn)備一個(gè)大的組件(在vue實(shí)例里)和一個(gè)子組件son,在son子組件里使用v-bind綁定要傳遞的message屬性,message屬性值是對(duì)應(yīng)父組件里的data值,然后在son子組件component方法的第二個(gè)參數(shù)的對(duì)象里增加一個(gè)props屬性(重點(diǎn)是這個(gè)props屬性,它是用來(lái)接收父組件的值的),值是數(shù)組,里面就填字符串形式的message,最后直接在子組件的模板里用插值的方式使用這個(gè)message就可以了.
同時(shí),也要了解子組件同步修改父子組件的值,操作如下:

子組件修改父子組件值的操作過(guò)程:
在子組件里定義一個(gè)修改的方法,在方法里添加this.$emit()方法,它有兩個(gè)參數(shù),第一個(gè)是自定義事件名,第二個(gè)是要修改的值,接著在父組件里用v-on添加這個(gè)自定義事件,值寫父組件方法,在這個(gè)方法里用(美元event)作為參數(shù),在父組件方法里接收并操作自己要修改的邏輯操作即可.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
前端構(gòu)建工具Webpack、Vite區(qū)別有哪些
Webpack和Vite是兩種主流的前端構(gòu)建工具,它們?cè)诠δ?、性能和使用?chǎng)景上有所不同,Webpack提供豐富的功能和配置,適合大型復(fù)雜項(xiàng)目,但可能導(dǎo)致啟動(dòng)和構(gòu)建速度較慢,Vite基于ES模塊,支持快速的熱替換,適合小型或中等項(xiàng)目,需要的朋友可以參考下2024-10-10
使用Vue3和p5.js實(shí)現(xiàn)交互式圖像動(dòng)畫
這篇文章主要介紹了如何用Vue3和p5.js打造一個(gè)交互式圖像動(dòng)畫,文中給出了詳細(xì)的代碼示例,本代碼適用于需要在網(wǎng)頁(yè)中實(shí)現(xiàn)圖像滑動(dòng)效果的場(chǎng)景,例如圖片瀏覽、相冊(cè)展示等,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-06-06
Pinia進(jìn)階setup函數(shù)式寫法封裝到企業(yè)項(xiàng)目
這篇文章主要為大家介紹了Pinia進(jìn)階setup函數(shù)式寫法封裝到企業(yè)項(xiàng)目實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
vue實(shí)現(xiàn)抽獎(jiǎng)效果Demo
這篇文章主要介紹了vue實(shí)現(xiàn)抽獎(jiǎng)效果Demo,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
vue3+element?Plus使用el-tabs標(biāo)簽頁(yè)解決頁(yè)面刷新不回到默認(rèn)頁(yè)的問(wèn)題
這篇文章主要介紹了vue3+element?Plus使用el-tabs標(biāo)簽頁(yè)頁(yè)面刷新不回到默認(rèn)頁(yè)的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
詳解vue開(kāi)發(fā)中調(diào)用微信jssdk的問(wèn)題
這篇文章主要介紹了vue開(kāi)發(fā)中調(diào)用微信jssdk的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
使用 Vue 3 的 createApp方法初始化應(yīng)用的基本步驟
createApp 是 Vue 3 引入的全局 API,用于創(chuàng)建一個(gè)應(yīng)用實(shí)例,這篇文章主要介紹了如何使用 Vue 3 的 createApp方法初始化應(yīng)用,通過(guò) createApp 方法,我們從 Vue 3 的基本初始化開(kāi)始,擴(kuò)展到插件的應(yīng)用、多個(gè)應(yīng)用實(shí)例的創(chuàng)建等,需要的朋友可以參考下2024-05-05
vue長(zhǎng)列表優(yōu)化之虛擬列表實(shí)現(xiàn)過(guò)程詳解
前端的業(yè)務(wù)開(kāi)發(fā)中會(huì)遇到不使用分頁(yè)方式來(lái)加載長(zhǎng)列表的需求,下面這篇文章主要給大家介紹了關(guān)于vue長(zhǎng)列表優(yōu)化之虛擬列表實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

