react传值

在React中,父组件向子组件传递数据是通过props实现的,而子组件向父组件传递数据则需要通过回调函数的方式。对于爷孙组件之间的通信,可以通过在中间组件上设置props和回调函数来传递数据。兄弟组件之间的通信则需要通过共享状态或者通过父组件来进行中转。

以下是一些基本的示例代码:

1. 父传子:

父组件:

复制代码
import React from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = () => {
  const dataFromParent = "Hello from parent";

  return (
    <div>
      <ChildComponent dataFromParent={dataFromParent} />
    </div>
  );
}

export default ParentComponent;

子组件:

复制代码
import React from 'react';

const ChildComponent = (props) => {
  return (
    <div>
      <p>{props.dataFromParent}</p>
    </div>
  );
}

export default ChildComponent;

2. 子传父:

父组件:

复制代码
import React, { useState } from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = () => {
  const [dataFromChild, setDataFromChild] = useState("");

  const handleDataFromChild = (data) => {
    setDataFromChild(data);
  }

  return (
    <div>
      <p>Data from child: {dataFromChild}</p>
      <ChildComponent onDataFromChild={handleDataFromChild} />
    </div>
  );
}

export default ParentComponent;

子组件:

复制代码
import React from 'react';

const ChildComponent = (props) => {
  const sendDataToParent = () => {
    const data = "Hello from child";
    props.onDataFromChild(data);
  }

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

export default ChildComponent;

3. 爷孙组件传值:

爷爷组件:

复制代码
import React, { useState } from 'react';
import ParentComponent from './ParentComponent';

const GrandparentComponent = () => {
  const [dataFromGrandchild, setDataFromGrandchild] = useState("");

  const handleDataFromGrandchild = (data) => {
    setDataFromGrandchild(data);
  }

  return (
    <div>
      <p>Data from grandchild: {dataFromGrandchild}</p>
      <ParentComponent onDataFromGrandchild={handleDataFromGrandchild} />
    </div>
  );
}

export default GrandparentComponent;

父组件:

复制代码
import React from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = (props) => {
  return (
    <div>
      <ChildComponent onDataFromGrandchild={props.onDataFromGrandchild} />
    </div>
  );
}

export default ParentComponent;

子组件:

复制代码
import React from 'react';

const ChildComponent = (props) => {
  const sendDataToGrandparent = () => {
    const data = "Hello from grandchild";
    props.onDataFromGrandchild(data);
  }

  return (
    <div>
      <button onClick={sendDataToGrandparent}>Send Data to Grandparent</button>
    </div>
  );
}

export default ChildComponent;

4. 兄弟组件传值:

在React中,兄弟组件之间的通信通常需要通过共享状态,可以将状态提升到它们的共同的父组件中,然后通过props传递给兄弟组件。

父组件:

复制代码
import React, { useState } from 'react';
import BrotherComponentA from './BrotherComponentA';
import BrotherComponentB from './BrotherComponentB';

const ParentComponent = () => {
  const [sharedData, setSharedData] = useState("");

  const handleDataChange = (data) => {
    setSharedData(data);
  }

  return (
    <div>
      <BrotherComponentA onSharedDataChange={handleDataChange} />
      <BrotherComponentB sharedData={sharedData} />
    </div>
  );
}

export default ParentComponent;

兄弟组件A:

复制代码
import React from 'react';

const BrotherComponentA = (props) => {
  const sendDataToBrotherB = () => {
    const data = "Hello from Brother A";
    props.onSharedDataChange(data);
  }

  return (
    <div>
      <button onClick={sendDataToBrotherB}>Send Data to Brother B</button>
    </div>
  );
}

export default BrotherComponentA;

兄弟组件B:

复制代码
import React from 'react';

const BrotherComponentB = (props) => {
  return (
    <div>
      <p>Data from Brother A: {props.sharedData}</p>
    </div>
  );
}

export default BrotherComponentB;

这些是基本的示例,实际应用中根据具体情况可能需要更复杂的状态管理工具,如Redux或者Context API。

相关推荐
code_YuJun8 分钟前
corepack 作用
前端
千寻girling8 分钟前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
全栈前端老曹10 分钟前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈
code_YuJun10 分钟前
pnpm-workspace.yaml
前端
天才熊猫君13 分钟前
“破案”笔记:iframe动态加载内容后,打印功能为何失灵?
前端
五月君_30 分钟前
炸裂!Claude Opus 4.6 与 GPT-5.3 同日发布:前端人的“自动驾驶“时刻到了?
前端·gpt
Mr Xu_34 分钟前
前端开发中CSS代码的优化与复用:从公共样式提取到CSS变量的最佳实践
前端·css
低代码布道师1 小时前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
鹏北海-RemHusband1 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
LYFlied1 小时前
AI大时代下前端跨端解决方案的现状与演进路径
前端·人工智能