组件通讯是什么?组件通讯有几种方式?

本文介绍了在React应用中,如何实现组件间的通信,包括父组件向子组件、子组件向父组件以及兄弟组件之间的数据传递,重点讲解了通过props和回调函数进行通信的方式以及状态管理的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组件是独立且封闭的单元,默认情况下,只能使用组件自己的数据。在组件化过程中,我们将一个完整的功能拆分成多个组件,以更好的完成整个应用的功能。而在这个过程中,多个组件之间不可避免的要共享某些数据。为了实现这些功能,就需要打破组件的独立封闭性,让其与外界沟通。这个过程就是组件通讯。组件通讯是构建 React 应用必不可少的一环。

组件是封闭的,组件之间的通讯有3种方式,分别是父组件到子组件,子组件到父组件和兄弟组件之间的通讯,下面分别看它们的用法。

1.组件传递数据给子组件

父组件提供要传递的state数据,给子组件标签添加属性,值为 state 中的数据,子组件中通过 props 接收父组件中传递的数据。

class Parent extends React.Component {
  state = { lastName: '王' }
  render() {
    return   (
      <div>
        传递数据给子组件:<Child name={this.state.lastName} />
      </div>
    )
  }
}
function Child(props) {
  return <div>子组件接收到数据:{props.name}</div>
}

2.子组件传递数据给父组件

利用回调函数,父组件提供回调,子组件调用,将要传递的数据作为回调函数的参数。
我们需要先利用父组件提供一个回调函数(用于接收数据),再将该函数作为属性的值,传递给子组件,示例代码如下:

class Parent extends React.Component {
  getChildMsg = (msg) => {
    console.log('接收到子组件数据', msg)
  }
  render() {
    return (
      <div>
        子组件:<Child getMsg={this.getChildMsg} />
      </div>
   )
  }
}

子组件通过 props 调用回调函数,将子组件的数据作为参数传递给回调函数。

class Child extends React.Component {
  state = { childMsg: 'React' } 
  handleClick = () => {
    this.props.getMsg(this.state.childMsg)
  }
  return (
    <button onClick={this.handleClick}>点我,给父组件传递数据</button>
  )
}

注意:回调函数中 this 指向问题!

3.兄弟组件

将共享状态提升到最近的公共父组件中,由公共父组件管理这个状态其中公共父组件职责是提供共享状态和操作共享状态的方法。要通讯的子组件只需通过 props 接收状态或操作状态的方法。

1695888403683_兄弟组件.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值