当前位置:首页 > React

react 父子组件如何通信

2026-01-24 09:36:31React

父子组件通信方法

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

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

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

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

// 父组件
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。

react 父子组件如何通信

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

相关文章

vue组件的实现

vue组件的实现

Vue 组件的实现方式 Vue 组件可以通过多种方式实现,主要包括单文件组件(SFC)、全局注册和局部注册。以下是常见的实现方法: 单文件组件(SFC) 单文件组件是 Vue 最推荐的组件化开发方…

vue哪个组件实现动画

vue哪个组件实现动画

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

vue怎么实现组件缓存

vue怎么实现组件缓存

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

vue组件传值实现分页

vue组件传值实现分页

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

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如:…

vue组件实现

vue组件实现

Vue 组件实现 Vue 组件是 Vue.js 的核心特性之一,允许开发者将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种常见方式: 单文件组件(SFC) 单文件组件是 Vue 中…