vue项目接口域名动态的获取方法
233
2023-05-19
Vue2.x中的父子组件相互通信的实现方法
业务场景:(这里指的是直接父子级关系的通信)
美女(子组件)将消息发送给大群(父组件)
大群(父组件)收到美女发送的消息后再回个信息给美女(子组件)
父组件
template
群消息girl:
{{ somebody }} 说: 我 {{ age }} 了。
:girls="aGirls" :noticeGirl="noticeGirl" @introduce="introduceSelf">
:girls="aGirls"
:noticeGirl="noticeGirl"
@introduce="introduceSelf">
注意的点:
这里在父组件使用v-on来监听子组件上的自定义事件($emit的变化),一旦发生变化noticeGirl方法就会触发
import vGirlGroup from './GirlGroup'
export default {
name: 'girl',
components: {
vGirlGroup
},
data () {
return {
aGirls:[{
name:'小丽',
age:22
},{
name:'小美',
age:21
},{
name:'小荷',
age:24
}],
somebody:'',
age:'',
noticeGirl:''
}
},
methods: {
introduceSelf (opt) {
this.somebody = opt.name;
this.age = opt.age;
// 通知girl收到消息
this.notdOCjJQticeGirl = opt.name + ',已收到消息';
}
}
}
注意的点:
这里methods中定义的方法introduceSelf就是父组件接收到子组件发出的$emit的事件处理程序
子组件
template
{{ index }} - {{ value.name }} - {{ value.age }}
script
export default {
name: 'girl-group',
props: {
girls: {
type: Array,
required: true
},
noticeGirl: {
type: String,
required: false
}
},
methods: {
noticeGroup (name, age) {
this.$emit('introduce',{
name: name,
age: age
})
}
}
}
</script>
注意的点:
子组件使用$emit发出自定义事件
相比于vue1.x的变化:
$dispatch 和 $broadcast 已经被弃用
*官方推荐的通信方式
首选使用Vuex
使用事件总线:eventBus,允许组件自由交流
具体可见:https://cn.vuejs.org/v2/guide/migration.html#dispatch-和-broadcast-替换
结果
以上所述是给大家介绍的Vue2.x中的父子组件相互通信,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~