当前位置:首页 > React

react父子组件如何传值

2026-03-11 13:40:06React

父组件向子组件传值

父组件通过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>;
}

子组件向父组件传值

子组件通过调用父组件传递的回调函数向父组件传递数据。父组件定义一个函数,将其作为prop传递给子组件,子组件在需要时调用该函数并传递数据。

父组件代码示例:

import ChildComponent from './ChildComponent';

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

子组件代码示例:

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

使用Context跨层级传值

对于深层嵌套的组件,可以使用React Context避免props层层传递。创建Context后,父组件作为Provider提供数据,子组件通过Consumer或useContext获取数据。

创建Context:

const MyContext = React.createContext();

父组件代码示例:

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

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

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

使用Ref获取子组件实例

父组件可以通过ref获取子组件实例,直接调用子组件的方法或访问其状态。需要子组件是类组件或使用forwardRef包装的函数组件。

父组件代码示例:

import ChildComponent from './ChildComponent';

function ParentComponent() {
  const childRef = React.useRef();
  const handleClick = () => {
    childRef.current.doSomething();
  };
  return (
    <>
      <ChildComponent ref={childRef} />
      <button onClick={handleClick}>Call Child Method</button>
    </>
  );
}

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

react父子组件如何传值

const ChildComponent = React.forwardRef((props, ref) => {
  React.useImperativeHandle(ref, () => ({
    doSomething: () => {
      console.log("Child method called");
    }
  }));
  return <div>Child Component</div>;
});

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

相关文章

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过d…

uniapp倒计时组件

uniapp倒计时组件

uniapp倒计时组件实现方法 使用内置组件实现 uniapp提供了<countdown>组件用于倒计时功能,支持自定义格式和样式。示例代码如下: <countdown…

vue实现水印组件

vue实现水印组件

Vue 水印组件的实现方法 使用Canvas绘制水印 在Vue组件中通过Canvas动态生成水印图案,将其作为背景添加到目标元素上。 <template> <div ref="…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…

vue实现高阶组件

vue实现高阶组件

Vue 高阶组件实现方法 高阶组件(HOC)是一种复用组件逻辑的模式,通过函数包裹组件并返回新组件实现。Vue 中可通过以下方式实现: 使用 render 函数 通过函数接收组件选项并返回新组件选项…

vue实现组件刷新

vue实现组件刷新

强制重新渲染组件 使用 this.$forceUpdate() 方法可以强制 Vue 实例重新渲染,但不会更新子组件。适用于依赖非响应式数据的情况。 methods: { refreshComp…