在前面我们了解过了,Vue的本质就是由很多组件构成的。那必然会出现两个组件需要传递数据的情况。
假设现在有这么一个页面,针对组件间的不同情况,我们使用不同的通信方式。

目录
props配置项
功能:让组件接收外部传过来的数据
使用:
1.传递数据:
<Demo bane = "xxx"/>
2.接收数据:
第一种方式(只接收):
props:['name']
第二种方式(限制类型):
props:{name:String}
第三种方式(限制类型、限制必要性、指定默认值):
props:{
name:{
type:String, //类型
required:true, //必要性
default:'男' //默认值
}
}
使用场景:
1.props配置项可以实现父组件给子组件传递数据。例如上图的A组件给B组件、C组件传递数据。
2.使用props也可以实现A组件给D组件传递数据,但是数据需要逐层传递,即A先传给C组件,C组件再传递给D组件。
3.props配置项也可以实现子组件传递数据给父组件,但需要父组件传递一个函数给子组件,在必要时,在子组件中调用这个函数,传递需要的参数过去。
自定义事件
功能:实现子组件向父组件传递数据
使用:
1.绑定自定义事件:
第一种方式,在父组件中:
<Demo @atguigu="test"/> 或 <Demo v-on:atguigu="test"/>
第二种方式,在父组件中:
<Demo ref="demo"/>
......
mounted(){
this.$refs.xxx.$on('atguigu',this.test)
}

本文详细介绍了Vue.js中组件间通信的各种方式,包括使用props从父组件向子组件传递数据,通过自定义事件实现子组件向父组件的通信,利用全局事件总线进行任意组件间的数据传递,以及使用插槽让父组件向子组件插入定制的HTML结构。这些方法各有适用场景,如props适合父子通信,自定义事件适合子向父通信,全局事件总线和消息订阅发布则用于跨级或兄弟组件通信。
最低0.47元/天 解锁文章
261

被折叠的 条评论
为什么被折叠?



