【React】组件父子通信以及父如何调用子的方法

本文详细介绍了React中,父组件通过Props向子组件传递数据,以及子组件通过回调函数将数据回传给父组件的方法。同时展示了如何在父组件调用子组件的方法,利用useRef进行组件引用管理。
摘要由CSDN通过智能技术生成

父向子 「Props」

在父组件中,可以通过在子组件标签上的属性传递数据,子组件可以通过 props 来接收这些数据。

父组件:

import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const data = '父组件中的数据';

  return (
    <div>
      <ChildComponent data={data} />
    </div>
  );
}

子组件

import React from 'react';

function ChildComponent(props) {
  return (
    <div>
      <p>{props.data}</p>
    </div>
  );
}

export default ChildComponent;

子向父「回调函数」

在子组件中,可以调用父组件传递的回调函数,并将需要传递的数据作为参数传递给这个函数,从而实现子组件向父组件传递数据。

父组件:

import React, { useState } from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const [dataFromChild, setDataFromChild] = useState('');

  const handleDataFromChild = (data) => {
    setDataFromChild(data);
  };

  return (
    <div>
      <ChildComponent sendDataToParent={handleDataFromChild} />
      <p>子组件: {dataFromChild}</p>
    </div>
  );
}

子组件

import React from 'react';

function ChildComponent(props) {
  const sendData = () => {
    const data = '子组件中的数据';
    props.sendDataToParent(data);
  };

  return (
    <div>
      <button onClick={sendData}>测试</button>
    </div>
  );
}

export default ChildComponent;

父组件如何调用子组件中的方法

在某些情况下,需要父组件中触发子组件的方法。
使用 useRef 来获取子组件的引用,然后通过该引用调用子组件中的方法。

父组件:

import { useRef } from "react"

function ParentComponent() {
  const childRef = useRef(null);

  const handleClickInChild = () => {
    if (childRef.current) {
      childRef.current.handleClick();
    }
  };

  return (
    <div>
      <button onClick={handleClickInChild}>触发子组件方法</button>
      <ChildComponent ref={childRef} />
    </div>
  );
}

export default ParentComponent;

子组件:

import React, { useRef } from 'react';

function ChildComponent() {
  const handleClick = () => {
    console.log('111');
  };

  return (
    <div>
      <button onClick={handleClick}>测试</button>
    </div>
  );
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值