当前位置:首页 > React

react父子组件如何传值

2026-01-25 04:33:36React

React 父子组件传值方法

父组件向子组件传值(Props)

父组件通过属性(props)将数据传递给子组件。子组件通过 props 接收数据。

父组件代码示例:

import ChildComponent from './ChildComponent';

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

子组件代码示例:

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

子组件向父组件传值(回调函数)

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

父组件代码示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const handleData = (data) => {
    console.log("Data from child:", data);
  };
  return <ChildComponent onData={handleData} />;
}

子组件代码示例:

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

使用 Context API 跨层级传值

适用于深层嵌套组件传值,避免逐层传递 props。

创建 Context:

import { createContext, useContext } from 'react';

const MyContext = createContext();

function ParentComponent() {
  return (
    <MyContext.Provider value={"Shared Data"}>
      <ChildComponent />
    </MyContext.Provider>
  );
}

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

使用 Refs 访问子组件

父组件通过 ref 直接调用子组件方法或访问其状态。

父组件代码示例:

import { useRef } from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const childRef = useRef();

  const getChildData = () => {
    alert(childRef.current.getValue());
  };

  return (
    <>
      <ChildComponent ref={childRef} />
      <button onClick={getChildData}>Get Child Data</button>
    </>
  );
}

子组件代码示例(需使用 forwardRef):

react父子组件如何传值

import { forwardRef, useImperativeHandle } from 'react';

const ChildComponent = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    getValue: () => "Data from Child"
  }));

  return <div>Child Component</div>;
});

每种方法适用于不同场景,根据组件关系和需求选择合适的方式。简单父子通信推荐使用 props 和回调函数,深层嵌套组件可考虑 Context API,需要直接访问子组件时使用 refs。

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

相关文章

vue实现盖章组件

vue实现盖章组件

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

vue实现路由组件

vue实现路由组件

Vue 实现路由组件的方法 在 Vue 中实现路由功能通常需要结合 Vue Router 库,以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router…

vue父子实现

vue父子实现

Vue 父子组件通信实现 Vue 中父子组件通信主要通过 props 和自定义事件实现。父组件向子组件传递数据使用 props,子组件向父组件传递数据使用自定义事件。 父组件向子组件传递数据 父组件…

vue组件实现computed

vue组件实现computed

Vue 组件中实现 computed 的方法 在 Vue 组件中,computed 用于声明计算属性,根据依赖的响应式数据动态计算并返回结果。计算属性具有缓存机制,只有当依赖的数据发生变化时才会重新计…

vue实现组件化

vue实现组件化

Vue 组件化实现方法 组件定义 使用 .vue 单文件组件格式,包含 <template>、<script> 和 <style> 三个部分: <templ…

vue 缩放组件实现

vue 缩放组件实现

实现 Vue 缩放组件的核心方法 使用 CSS transform 实现基础缩放 通过动态绑定 transform: scale() 样式实现缩放效果。在 Vue 组件的模板中添加需要缩放的元素,并通…