当前位置:首页 > 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)。

react 父子组件如何通信

// 子组件(需用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 实现组件的方法 Vue 中实现组件可以通过多种方式,包括全局注册、局部注册、单文件组件(SFC)等。以下是常见的实现方法。 全局注册组件 全局注册的组件可以在任何 Vue 实例或组件中使用。…

vue实现折叠组件

vue实现折叠组件

实现折叠组件的基本思路 在Vue中实现折叠组件通常需要利用动态绑定和条件渲染。核心是通过控制一个布尔值状态来决定内容是否显示,并添加过渡动画提升用户体验。 基础实现方法 使用v-show或v-if控…

react如何删除组件

react如何删除组件

删除 React 组件的几种方法 条件渲染法 通过状态控制组件是否渲染。当状态为 false 时,组件会被移除: const [showComponent, setShowComponent…

vue 实现toast组件

vue 实现toast组件

实现 Vue Toast 组件的方法 创建基础 Toast 组件 在 Vue 项目中创建一个基础 Toast 组件,通常包含消息内容和显示控制逻辑。 <template> &…

vue组件实现vmodel

vue组件实现vmodel

Vue 组件实现 v-model 在 Vue 中,v-model 是双向数据绑定的语法糖,默认情况下绑定 value 属性并监听 input 事件。在自定义组件中实现 v-model 需要正确配置 p…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…