You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React.js的React.createElement()中传递回调函数实现子父组件通信

实现方案

你可以直接把回调函数作为属性写入React.createElement的第二个参数(子组件props对象),具体实现如下:

第一步:父组件新增子组件状态处理方法,添加到子组件props

class ParentComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: '',
      changes: '' // 存储子组件传递过来的状态
    }
    
    this.handler = this.handler.bind(this);
    // 新增绑定子组件状态变更的回调
    this.handleChildStateChange = this.handleChildStateChange.bind(this);
  }
 handler(id) {
    this.setState({
      data: id
    });
  }
  // 新增接收子组件状态的方法
  handleChildStateChange(childState) {
    this.setState({
      changes: childState
    })
  }
  render() {
    return (
      <React.Fragment>
        <Row>
          <Col className="col-3">
            {/* 将父组件最新state传递给SideNav实现同步 */}
            <SideNav data={this.state} props={this.props} onChange={this.handler} />
          </Col>
          <Col>
            {React.createElement(
              ChildComponent, {
                data: this.state.data,
                // 新增回调属性,子组件内部调用即可传值到父组件
                onStateChange: this.handleChildStateChange
              }
            )}
          </Col>
        </Row>
      </React.Fragment>
    )
  }
}

第二步:子组件内部调用回调方法同步状态

在子组件需要同步状态的逻辑处,调用props上的onStateChange方法传入最新状态即可,示例:

// ChildComponent 内部示例代码
class ChildComponent extends Component {
  // 子组件某个状态变更的处理逻辑
  handleSomeUpdate = (newVal) => {
    this.setState({
      someState: newVal
    }, () => {
      // 调用父组件传递的回调,把需要同步的状态传出去
      this.props.onStateChange(this.state.someState)
    })
  }
}

内容的提问来源于stack exchange,提问作者CoderBeginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:06:03