当前位置:首页 > React

react父子组件之间如何通信

2026-03-11 12:50:23React

父子组件通信方法

父组件向子组件传递数据
父组件通过props向子组件传递数据。子组件通过props接收父组件传递的值。

react父子组件之间如何通信

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

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

子组件向父组件传递数据
父组件通过传递回调函数给子组件,子组件调用该函数并传递数据。

react父子组件之间如何通信

// 父组件
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 Data</button>;
}

使用Context跨层级通信
适用于深层嵌套组件,避免逐层传递props

import React, { createContext, useContext } from "react";

const MyContext = createContext();

// 父组件
function Parent() {
  const value = "Shared Data";
  return (
    <MyContext.Provider value={value}>
      <Child />
    </MyContext.Provider>
  );
}

// 子组件
function Child() {
  const contextValue = useContext(MyContext);
  return <div>{contextValue}</div>;
}

使用Ref直接操作子组件
父组件通过ref访问子组件的实例或DOM节点。

import React, { useRef } from "react";

// 子组件(需使用forwardRef)
const Child = React.forwardRef((props, ref) => {
  return <div ref={ref}>Child Component</div>;
});

// 父组件
function Parent() {
  const childRef = useRef();
  const handleClick = () => {
    console.log(childRef.current); // 访问子组件的DOM节点
  };
  return (
    <>
      <Child ref={childRef} />
      <button onClick={handleClick}>Access Child</button>
    </>
  );
}

选择通信方式的场景

  • 简单数据传递:优先使用props和回调函数。
  • 深层嵌套组件:使用Context减少中间层传递。
  • 需要直接控制子组件:使用ref(谨慎使用,避免破坏组件封装性)。

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

相关文章

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

组件elementui

组件elementui

ElementUI 简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如按钮、表单、表格等),适合快速构建企业级中后台产品。…

vue实现递归组件

vue实现递归组件

递归组件的实现方法 在Vue中实现递归组件主要依靠组件调用自身的能力。以下是几种常见的实现方式: 使用组件name属性 通过组件的name属性实现递归调用是最简单的方式: <template…

vue抽屉组件实现

vue抽屉组件实现

Vue 抽屉组件实现 使用 Element UI 实现 Element UI 提供了现成的抽屉组件 el-drawer,可以快速实现抽屉效果。 安装 Element UI: npm install…

vue 实现toast组件

vue 实现toast组件

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