当前位置:首页 > React

react父子组件如何通信

2026-01-24 21:10:15React

父子组件通信方法

父组件向子组件传递数据
通过props实现父组件向子组件传递数据。父组件在调用子组件时通过属性传递值,子组件通过props接收。

父组件示例:

function Parent() {
  const data = "Hello from Parent";
  return <Child message={data} />;
}

子组件示例:

function Child(props) {
  return <div>{props.message}</div>;
}

子组件向父组件传递数据
通过回调函数实现子组件向父组件传递数据。父组件将函数作为props传递给子组件,子组件调用该函数并传递参数。

父组件示例:

function Parent() {
  const handleData = (data) => {
    console.log(data); // 接收子组件数据
  };
  return <Child onSendData={handleData} />;
}

子组件示例:

function Child({ onSendData }) {
  const sendData = () => {
    onSendData("Data from Child");
  };
  return <button onClick={sendData}>Send</button>;
}

使用Context跨层级通信
当组件层级较深时,可通过React.createContext创建上下文,避免逐层传递props

创建Context:

const MyContext = React.createContext();

父组件提供值:

function Parent() {
  return (
    <MyContext.Provider value="Context Data">
      <Child />
    </MyContext.Provider>
  );
}

子组件消费值:

function Child() {
  const value = useContext(MyContext);
  return <div>{value}</div>;
}

使用Ref直接操作子组件
通过useRef获取子组件实例,直接调用子组件方法或访问其状态(需子组件为类组件或使用forwardRef)。

父组件示例:

function Parent() {
  const childRef = useRef();
  const handleClick = () => {
    childRef.current.childMethod();
  };
  return (
    <>
      <Child ref={childRef} />
      <button onClick={handleClick}>Call Child</button>
    </>
  );
}

子组件示例(使用forwardRef):

const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    childMethod: () => console.log("Child method called")
  }));
  return <div>Child Component</div>;
});

react父子组件如何通信

标签: 父子组件
分享给朋友:

相关文章

vue组件传值实现分页

vue组件传值实现分页

Vue组件传值实现分页的方法 在Vue中实现分页功能,通常需要父子组件之间的数据传递。以下是几种常见的传值方式: 使用props传递数据 父组件通过props向子组件传递当前页码和总页数等分页信息…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性来完成。以下是几种常见的实…

vue动态组件实现

vue动态组件实现

动态组件的基本用法 在Vue中,动态组件通过<component>标签和is属性实现。is属性可以绑定组件名称或组件选项对象,实现动态切换。 <template> &l…

vue 实现组件刷新

vue 实现组件刷新

组件局部刷新 在Vue中实现组件刷新可以通过强制重新渲染组件来实现。常用的方法有以下几种: 使用v-if指令 通过切换v-if条件触发组件的销毁和重建 <template> <…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…

vue实现秒表组件

vue实现秒表组件

实现秒表组件的基本思路 使用Vue实现秒表组件需要管理时间状态、控制计时器的启动/暂停/重置功能,并通过计算属性动态显示格式化时间。核心逻辑包括利用setInterval更新计时数据,并通过生命周期钩…