vue父组件向子组件传递数据
vue父组件怎么向子组件传递数据呢?不知道的小伙伴来看看小编今天的分享吧!
vue父组件向子组件传递数据的方法有四种:props和event、ref、provide和inject、vuex。
1、props和event
父组件向子组件传递props数据,子组件通过触发事件向父组件回传数据,代码如下:
//子组件
<template>
<div @click="changeName('YYY')">{{name}}</div>
</template>
<script>
export default{
props:['name'],//or props:{name:{type:String,default:''}}
methods:{
//不能在子组件修改props数据,应触发事件让父组件处理
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>
以上就是一个完整的流程,父组件通过props将数据传递给子组件,子组件则触发事件,由父组件监听,并做相应处理。
2、ref
ref属性可定义在子组件或原生DOM上,如果在子组件上,则指向子组件实例,如果在原生DOM上,则指向原生DOM元素(可以用做元素选择,省去querySelector的烦恼)。
传递数据的思路:在父组件内通过ref获取子组件实例,然后调用子组件方法,并传递相关数据作为参数。代码如下:
//子组件
<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
官方不推荐在生产环境使用
provide意为提供,当一个组件通过provide提供了一个数据,那么它的子孙组件就可以使用inject接受注入,从而可以使用祖先组件传递过来的数据。代码如下:
//child
<template>
<div>{{appName}}</div>
</template>
<script>
export default{
inject:['appName']
}
</script>
// root
export default{
data(){
return {
appName:'Test'
}
},
provide:['appName']
}
4、vuex
vue官方推荐的全局状态管理插件。
-
2022年想分手但是舍不得的说说
1、手机丢了最伤心的是大半年来舍不得删的东西都没了。而我是一个不习惯备份的人。2、失恋的人的伤心大多不是因为恋人的离开,而是因为自己对自己处境的同情和怜悯。3、一个人熬过了所有...
说说查看全文>> -
古斯特百公里加速多少秒
古斯特搭载6.6T版本发动机,分为高低功率两个版本,百公里加速时间分别为4.9秒和4.8秒。古斯特这款6.6T版本发动机的型号为N74B66A,实际排量为6592ml。N74B...
问答查看全文>> -
创业心灵鸡汤经典语录
1、坚强,不是面对悲伤不流一滴泪,而是擦干眼泪后微笑着面对以后的生活。2、有时可能别人不在乎你,但你不能不在乎自己。3、成功不了就是你太弱了,哪来那么多原因。4、与其等着别人来...
语录查看全文>> -
奢华电子产品盘点 世界十大最贵科技产品
为您整理了奢华电子产品盘点,它们是CES展会组装音响(约5840.4万)、米勒特制平板电脑(约1141.92万)、黄金钻石定制版iphone5(约1亿)、莱卡镜头1600mm(...
品牌查看全文>> -
网上预选车牌号次数用完了怎么办?
网上预选车牌号次数用完了解决方法:1、正式进入选号阶段共有自编选号、随机选号两种方式。其中,自编选号最多20次机会,如果自编号牌验证通过,系统将自动确认号牌,用户即完成选号;2...
问答查看全文>>
推荐
- 1悦翔水泵多久更换一次?237
- 2哪些汽车的中控屏是悬浮式的?360
- 3凯迪拉克CT4空调滤芯多久换,CT4空调滤芯位置及更换教程?378
- 4矿泉水瓶叶插多肉注意375
- 5吸渣体质是什么意思161
- 6冬天汽车打不着火的原因是什么278
- 7赋予我们无穷的力量 祖国是我们自信的源头394
- 8丰田16款卡罗拉变速箱主要问题是什么176