当前位置:首页 > React

react如何实现父子传值

2026-01-25 08:53:55React

父组件向子组件传值

父组件通过props将数据传递给子组件。在父组件中,通过子组件的属性传递数据。

父组件代码示例:

import Child from './Child';

function Parent() {
  const message = "Hello from Parent";

  return (
    <div>
      <Child message={message} />
    </div>
  );
}

子组件通过props接收数据:

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

子组件向父组件传值

子组件通过调用父组件传递的回调函数,将数据传回父组件。

父组件代码示例:

import Child from './Child';

function Parent() {
  const handleData = (data) => {
    console.log("Data from child:", data);
  };

  return (
    <div>
      <Child onData={handleData} />
    </div>
  );
}

子组件调用父组件传递的函数:

function Child(props) {
  const sendData = () => {
    props.onData("Data from Child");
  };

  return (
    <button onClick={sendData}>Send Data to Parent</button>
  );
}

使用Context跨层级传值

对于深层嵌套的组件,可以使用React Context避免逐层传递props。

创建Context:

import { createContext } from 'react';

const MyContext = createContext();

父组件提供值:

function Parent() {
  return (
    <MyContext.Provider value="Shared Value">
      <Child />
    </MyContext.Provider>
  );
}

子组件消费值:

import { useContext } from 'react';

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

使用Ref获取子组件实例

父组件可以通过ref直接访问子组件的实例和方法。

父组件代码:

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

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

  const callChildMethod = () => {
    childRef.current.childMethod();
  };

  return (
    <div>
      <Child ref={childRef} />
      <button onClick={callChildMethod}>Call Child Method</button>
    </div>
  );
}

子组件需要使用forwardRef暴露方法:

react如何实现父子传值

import { forwardRef, useImperativeHandle } from 'react';

const Child = forwardRef((props, ref) => {
  useImperativeHandle(ref, () => ({
    childMethod: () => {
      console.log("Child method called");
    }
  }));

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

分享给朋友:

相关文章

vue如何实现到期提醒

vue如何实现到期提醒

实现思路 在Vue中实现到期提醒功能,可以通过计算日期差、定时检查和通知用户三个核心步骤完成。需要结合Vue的响应式特性和JavaScript的日期处理能力。 计算日期差 使用JavaScript的…

vue如何实现记住我

vue如何实现记住我

实现“记住我”功能的步骤 在Vue中实现“记住我”功能通常涉及前端保存用户登录状态(如token)到本地存储,并在下次访问时自动恢复登录状态。以下是具体实现方法: 使用localStorage或co…

h5如何实现vr效果

h5如何实现vr效果

使用WebXR API实现VR效果 WebXR是浏览器中实现VR/AR的核心API,支持设备姿态追踪、渲染交互等功能。需在支持WebXR的设备(如Oculus、HTC Vive)或浏览器模拟环境中运行…

vue如何实现select

vue如何实现select

Vue 实现 Select 组件的方法 在 Vue 中实现 Select 组件可以通过原生 HTML <select> 元素或使用第三方 UI 库(如 Element UI、Ant Des…

vue如何实现uuid

vue如何实现uuid

生成 UUID 的方法 在 Vue 中生成 UUID 可以通过第三方库或原生 JavaScript 实现。以下是几种常见方法: 使用 uuid 库 安装 uuid 库: npm install u…

vue如何实现ifream

vue如何实现ifream

Vue 中实现 iframe 的方法 在 Vue 中可以通过多种方式实现 iframe 的嵌入和控制。以下是几种常见的方法: 使用 HTML 原生 iframe 标签 在 Vue 模板中直接使用…