React之组件通信

父传子

通过props传递

  • 共同的数据放在父组件上, 特有的数据放在自己组件内部(state)
  • 一般数据–>父组件传递数据给子组件–>子组件读取数据
  • 函数数据–>子组件传递数据给父组件–>子组件调用函数
  • 问题: 多层传递属性麻烦, 兄弟组件通信不方便

image-20201102143956518

通过ref

在input中进行ref标记,并调用

image-20201102151736664

子传父

在父组件定义函数,传递给子组件,子组件调用

问题:需要在子组件中改变父组件的状态

子组件中不能直接改变父组件的状态

状态在哪个组件,更新状态的行为就应该在哪个组件

解决:在父组件定义函数,传递给子组件,子组件调用

在父组件中定义函数

image-20201102145043175

在子组件中调用

image-20201102145331011

image-20201102145845890

通过ref

使用ref获取子组件的内容

image-20201102151941585

通过事件对象

image-20201102152250846

子与子

把数据都挂载父组件上

bus

vue中的bus

使用bus 空载实例

  • 声明使用bus.on
  • 调用使用bus.$emit

image-20201102165053074

react中的bus

  • 新建bus/index.js

    image-20201102170234435

  • 注册

    image-20201102170302171

  • 使用

    image-20201102170351121

爷传孙

Context 基于对象,注册的是数据

而bus是基于公共方法

image-20201102171206339

https://react.docschina.org/docs/context.html

  • 新建context/index.js

    image-20201102171534327

  • 爷组件中引入,创建上下文,作为数据提供者 并依赖注入

    image-20201102171917522

image-20201102172226115

  • 在孙组件使用

image-20201102190142150

image-20201102172906896

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值