当前位置:首页 > React

react 父子组件如何通信

2026-01-24 09:36:31React

父子组件通信方法

父组件向子组件传递数据(Props)
父组件通过props将数据传递给子组件,子组件通过this.props(类组件)或直接解构(函数组件)接收。这是React中最基础的通信方式。

react 父子组件如何通信

// 父组件
<ChildComponent message="Hello from parent" />

// 子组件(函数式)
function ChildComponent({ message }) {
  return <div>{message}</div>;
}

子组件向父组件传递数据(回调函数)
父组件通过props传递一个回调函数给子组件,子组件调用该函数并传递参数实现数据回传。

react 父子组件如何通信

// 父组件
function Parent() {
  const handleData = (data) => console.log(data);
  return <Child onData={handleData} />;
}

// 子组件
function Child({ onData }) {
  return <button onClick={() => onData("Child data")}>Send</button>;
}

使用Context跨层级通信
当组件层级较深时,可通过React Context避免逐层传递props。创建Context后,父组件用Provider提供数据,子组件用useContextConsumer消费数据。

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传递DOM或组件实例
父组件通过useRefcreateRef创建ref,并传递给子组件,可获取子组件的DOM节点或实例方法(需配合forwardRef)。

// 子组件(需用forwardRef包装)
const Child = forwardRef((props, ref) => {
  return <div ref={ref}>Child Element</div>;
});

// 父组件
function Parent() {
  const childRef = useRef();
  useEffect(() => {
    console.log(childRef.current); // 访问子组件DOM
  }, []);
  return <Child ref={childRef} />;
}

注意事项

  • 单向数据流:React遵循单向数据流,直接修改props会引发警告,应通过回调函数更新父组件状态。
  • 性能优化:避免在渲染函数中动态创建回调,可能导致子组件不必要的重新渲染。
  • Context使用场景:仅适用于跨多层级通信,简单场景仍建议使用props。

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

相关文章

vue实现倒计时组件

vue实现倒计时组件

实现基础倒计时功能 使用 Vue 的 data 和 methods 定义倒计时逻辑,通过 setInterval 更新剩余时间。 <template> <div>{{…

vue动态组件实现

vue动态组件实现

Vue 动态组件实现方法 使用 component 标签与 is 属性 通过 Vue 内置的 <component> 标签和 is 属性实现动态组件切换。is 的值可以是已注册的组件名或导…

vue哪个组件实现动画

vue哪个组件实现动画

在Vue中实现动画效果,可以通过以下组件和方法实现: Vue内置动画组件 Vue提供了<transition>和<transition-group>两个内置组件,用于处理进…

vue怎么实现组件缓存

vue怎么实现组件缓存

vue实现组件缓存的方法 在Vue中实现组件缓存可以通过内置的<keep-alive>组件完成,该组件能够缓存不活动的组件实例,避免重复渲染。 使用<keep-alive>…

实现vue组件

实现vue组件

创建 Vue 组件 Vue 组件可以通过单文件组件(.vue 文件)或直接在 JavaScript 中定义。以下是两种常见实现方式。 单文件组件方式 单文件组件包含模板、脚本和样式三部分,适合复杂…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class…