react+ts父子组件传值

父传子

①在父组件中定义const nameFromParent: string = "John";

②从父组件传递给子组件<ChildComponent name={nameFromParent} />

③在子组件中定义属性的类型interface ChildProps { age: number;}

④如果数据多需要解构再使用const { name,... } = props;,如果只有一个参数也可以直接卸载函数的参数括号中

⑤在子组件中使用<p>Child Component</p>

ts 复制代码
import React from 'react';

// 子组件
interface ChildProps {
  name: string;
  age: number;
  handleClick: () => void;
}

const ChildComponent: React.FC<ChildProps> = (...props) => {
  const { name, age, handleClick } = props;

  return (
    <div>
      <p>Child Component</p>
      <p>Name: {name}</p>
      <p>Age: {age}</p>
      <button onClick={handleClick}>Click me</button>
    </div>
  );
};

// 父组件
const ParentComponent: React.FC<ParentProps> = () => {
  const nameFromParent: string = "John";
  const ageFromParent: number = 25;

  const handleClick = () => {
    console.log('Button clicked!');
  };

  // 使用 {...props} 将所有属性传递给子组件
  return (
    <div>
      <p>Parent Component</p>
      <ChildComponent name={nameFromParent} age={ageFromParent} handleClick={handleClick} />
    </div>
  );
};

export default ParentComponent;

子传父

①在父组件中定义事件名称并赋予点击事件<ChildComponent sendDataToParent={handleDataFromChild} />

②在父组件中实现点击事件const handleDataFromChild = (data: string) => {};

③在子组件中定义事件类型interface ChildProps {sendDataToParent: (data: string) => void;}

④如果数据多需要解构再使用const { sendDataToParent,... } = props;,如果只有一个参数也可以直接卸载函数的参数括号中

⑤在子组件中定义点击事件并<button onClick={sendData}>Send Data to Parent</button>

⑥并在子组件中实现点击事件调通过父组件传过来的事件传递参数const sendData = () => {sendDataToParent(data); };

另外如果想不点击直接发送参数的话可以在useEffect(() => {sendDataToParent(data);},[sendDataToParent])

ts 复制代码
import React from 'react';

// 子组件
interface ChildProps {
  sendDataToParent: (data: string) => void;
}

const ChildComponent: React.FC<ChildProps> = ({ sendDataToParent }) => {
  const sendData = () => {
    const data = "Data from Child";
    // 在需要的时候调用回调函数传递信息给父组件
    sendDataToParent(data);
  };

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


// 父组件
const ParentComponent: React.FC<ParentProps> = () => {
    
  const handleDataFromChild = (data: string) => {
    console.log('Data received from Child:', data);
    // 在这里处理从子组件接收到的数据
  };

  return (
    <div>
      <p>Parent Component</p>
      {/* 将回调函数传递给子组件 */}
      <ChildComponent sendDataToParent={handleDataFromChild} />
    </div>
  );
};

export default ParentComponent;
相关推荐
橙光成长2 小时前
PDF离线工具箱深度解析:4MB纯前端单文件,40+功能全本地运行,文件绝不上传
前端·pdf·1024程序员节
小poop8 小时前
CSS 基础与实战:从入门到精通网页美化
前端
Csvn10 小时前
运行时性能
前端
Never_every9910 小时前
位图转矢量工具哪个好?实测抠抠图AI位图转矢量工具
大数据·前端
paopaokaka_luck11 小时前
宠物门店经营管理系统(销售与库存联动、进货自动记账、 退换与退款关联、员工个人业绩、ECharts 经营分析、滞销识别与客户分层、宠物档案年龄计算)
前端·javascript·spring boot·mysql·echarts·mybatis·1024程序员节
空中湖11 小时前
用 React 写数据大屏:为什么我不建议用图表库
前端·react.js·前端框架
欣欣之王来了13 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
IT_陈寒13 小时前
Redis的LRU淘汰策略坑了我一整天
前端·人工智能·后端
计算机魔术师13 小时前
砍半价格、参数再涨,国产旗舰追到 Opus 鼻尖了
前端
特立独行的猫A13 小时前
10 MB 的桌面 AI 客户端:用仓颉 + 系统 WebView 替代 Electron
前端·harmonyos