最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

vue父組件向子組件傳遞數(shù)據(jù)

來(lái)源:懂視網(wǎng) 責(zé)編:李贏贏 時(shí)間:2021-12-25 17:07:55
文檔

vue父組件向子組件傳遞數(shù)據(jù)

vue父組件向子組件傳遞數(shù)據(jù)的方法有四?種:props、ref、provide和inject、vuex。1、props:父組件向子組件傳遞props數(shù)據(jù)。2、ref:r可定義在子組件或原生DOM上。3、provide:官方不推薦在生產(chǎn)環(huán)境使用。4、vuex:全局狀態(tài)管理插件。
推薦度:
導(dǎo)讀vue父組件向子組件傳遞數(shù)據(jù)的方法有四?種:props、ref、provide和inject、vuex。1、props:父組件向子組件傳遞props數(shù)據(jù)。2、ref:r可定義在子組件或原生DOM上。3、provide:官方不推薦在生產(chǎn)環(huán)境使用。4、vuex:全局狀態(tài)管理插件。

vue父組件怎么向子組件傳遞數(shù)據(jù)呢?不知道的小伙伴來(lái)看看小編今天的分享吧!

vue父組件向子組件傳遞數(shù)據(jù)的方法有四種:props和event、ref、provide和inject、vuex。

1、props和event

父組件向子組件傳遞props數(shù)據(jù),子組件通過(guò)觸發(fā)事件向父組件回傳數(shù)據(jù),代碼如下:

//子組件 

<template>

<div @click="changeName('YYY')">{{name}}</div>

</template>

<script>

export default{

props:['name'],//or props:{name:{type:String,default:''}}

methods:{

//不能在子組件修改props數(shù)據(jù),應(yīng)觸發(fā)事件讓父組件處理

changeName(newName){

this.$emit('changeName',newName)

}

}

}

</script>

//父組件

<template>

<div>

<child-comp :name="name" @changeName="changeName"></child-comp>

</div>

</template>

<script>

import childComp from 'path'

export default{

data(){

return {name:'XXX'}

},

components:{

childComp

},

methods:{

changeName(newName){

this.name = newName;

}

}

}

</scritp>

以上就是一個(gè)完整的流程,父組件通過(guò)props將數(shù)據(jù)傳遞給子組件,子組件則觸發(fā)事件,由父組件監(jiān)聽(tīng),并做相應(yīng)處理。

2、ref

ref屬性可定義在子組件或原生DOM上,如果在子組件上,則指向子組件實(shí)例,如果在原生DOM上,則指向原生DOM元素(可以用做元素選擇,省去querySelector的煩惱)。

傳遞數(shù)據(jù)的思路:在父組件內(nèi)通過(guò)ref獲取子組件實(shí)例,然后調(diào)用子組件方法,并傳遞相關(guān)數(shù)據(jù)作為參數(shù)。代碼如下:

//子組件 

<template>

<div>{{parentMsg}}</div>

</template>

<script>

export default{

data(){

return {

parentMsg:''

}

},

methods:{

getMsg(msg){

this.parentMsg = msg;

}

}

}

</script>

//父組件

<template>

<div>

<child-comp ref="child"></child-comp>

<button @click="sendMsg">SEND MESSAGE</button>

</div>

</template>

<script>

import childComp from 'path'

export default{

components:{

childComp

},

methods:{

sendMsg(){

this.$refs.child.getMsg('Parent Message');

}

}

}

</scritp>

3、provide和inject 

官方不推薦在生產(chǎn)環(huán)境使用

provide意為提供,當(dāng)一個(gè)組件通過(guò)provide提供了一個(gè)數(shù)據(jù),那么它的子孫組件就可以使用inject接受注入,從而可以使用祖先組件傳遞過(guò)來(lái)的數(shù)據(jù)。代碼如下:

//child

<template>

<div>{{appName}}</div>

</template>

<script>

export default{

inject:['appName']

}

</script>

// root 

export default{

data(){

return {

appName:'Test'

}

},

provide:['appName']

}

4、vuex

vue官方推薦的全局狀態(tài)管理插件。

以上就是小編今天的分享了,希望可以幫助到大家。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue父組件向子組件傳遞數(shù)據(jù)

vue父組件向子組件傳遞數(shù)據(jù)的方法有四?種:props、ref、provide和inject、vuex。1、props:父組件向子組件傳遞props數(shù)據(jù)。2、ref:r可定義在子組件或原生DOM上。3、provide:官方不推薦在生產(chǎn)環(huán)境使用。4、vuex:全局狀態(tài)管理插件。
推薦度:
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專(zhuān)題
Top