vue实现组件通信的5中方式

通信种类

1)父组件向子组件通信
2)子组件向父组件通信
3)隔代组件间通信
4)兄弟组件间通信

1、props

1)通过一般属性实现父向子通信
2)通过函数属性实现子向父通信

父组件

<Screenfull :getScreenfullInfo="getScreenfullInfo" />

methods: {
        // 全屏事件,子传父,通过通过父组件给子组件传递函数类型的props方式
        getScreenfullInfo(res) {
            this.isFullscreen = res;
        }
}

子组件

props: ['getScreenfullInfo'],

methods: {
change() {
     this.isFullscreen = screenfull.isFullscreen;
     // 子传父,子组件调用父组件提供的函数,通过通过父组件给子组件传递函数类型的props方式
     this.getScreenfullInfo(this.isFullscreen);
},

3)缺点:隔代组件和兄弟组件间通信比较麻烦

2、vue自定义事件

1)vue内置实现,可以代替函数类型的props
a.绑定监听:<MyComp @eventName=“callback”
b.触发(分发)事件: this.$emit( “eventName”, data)
2)缺点:只适命于子向父通信

3、消息订阅与发布

1)需要引入消息订阅与发布的实现库,如: pubsub-js
a.订阅消息:PubSub.subscribe( ‘msg’, (msg, data)=>{})
b.发布消息:PubSub.publish(‘msg’, data)
2)优点:此方式可用于任意关系组件间通信

4、vuex

1)是什么:vuex是 vue官方提供的集中式管理vue多组件共享状态数据的vue插件
2)优点:对组件间关系没有限制,且相比于pubsub 库管理更集中,更方便

5、slot

1)是什么:专门用来实现父向子传递带数据的标签
a.子组件
b.父组件
2)注意:通信的标签模板是在父组件中解析好后再传递给子组件的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值