当前位置: 首页 > news >正文

React 与 TS 结合使用时组件传参总结

在学习 React 时,我们总会遇到在 TS 和 JS 之间切换来开发多个项目,而有时会忘记 TS 的语法,所以编写一下 React 结合 TS 开发时的一些总结知识点,以便后续回顾用。

向组件传递基础参数(字符串、数字和布尔值)

这节主要是介绍一下在 React + TS 中如何实现组件传递基础类型的参数。具体实例如下:

type BasePropData = {name: string;age: number;isGraduate: boolean;
};const BaseProps: React.FC<BasePropData> = ({ name, age, isGraduate }) => {return (<div><h2>传递基础参数实例</h2><p>name: {name}</p><p>age: {age}</p><p>isGraduate: {isGraduate ? "是" : "否"}</p></div>);
};export default BaseProps;

向组件传递对象参数(数组、对象和多值情况)

这节主要是介绍一下在 React + TS 中如何实现组件传递数组、对象和联合类型的的参数。具体实例如下:

type StudentProps = {id: number;name: string;age: number;
};type ObjectPropsData = {students: StudentProps[];classInfo: {no: string;name: string;roomNo: string;studentCount: number;grade: "初一" | "初二" | "初三";};
};const ObjectProps: React.FC<ObjectPropsData> = (props) => {return (<div><h2>传递对象参数实例</h2><div><h4>班级信息</h4><hr /><p>年级编号:{props.classInfo.no}</p><p>年级名称:{props.classInfo.name}</p><p>教室编号:{props.classInfo.roomNo}</p><p>学生数量:{props.classInfo.studentCount}</p><p>班级年级:{props.classInfo.grade}</p></div><div><h4>学生姓名</h4><hr />{props.students.map((item) => (<p>姓名:{item.name} 年龄:{item.age}</p>))}</div></div>);
};export default ObjectProps;

向组件传递 children 参数

这节主要是介绍一下在 React + TS 中如何实现组件传递 children 的参数。具体实例如下:

// children参数为字符串
type ChildrenPropsData = {children: string;
};const ChildrenStringProps: React.FC<ChildrenPropsData> = (props) => {return (<div><h2>组件传递 children 参数实例</h2><p>{props.children}</p></div>);
};// children参数为React.Node
type ChildrenReactNodePropsData = {children: React.ReactNode;
};const ChildrenReactNodeProps: React.FC<ChildrenReactNodePropsData> = (props
) => {return (<div><h2>组件传递 children 参数实例</h2>{props.children}</div>);
};

向组件传递事件和样式参数

这节主要是介绍一下在 React + TS 中如何实现组件传递事件和样式参数。具体实例如下:

  • 事件参数实例

    这里只是列举两个事件类型的传参实例,每个事件在 Ts 中的声明可以参考如下信息:

//
type EventPropsData = {value: string;handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;getInputVal: (event: React.MouseEvent<HTMLButtonElement>, id: string) => void;
};const EventProps: React.FC<EventPropsData> = ({value,handleChange,getInputVal,
}) => {return (<div><h2>组件传递 事件 参数实例</h2><input type="text" value={value} onChange={handleChange} /><button onClick={(event) => getInputVal(event, value)}>Click</button></div>);
};export default EventProps;
  • 样式参数实例
type StylePropsData = {styles: React.CSSProperties;
};const StyleProps: React.FC<StylePropsData> = ({ styles }) => {return (<div><h2>组件传递 样式 参数实例</h2><div style={styles}>这里是传入的参数样式</div></div>);
};export default StyleProps;

向组件中传入组件参数

这节主要是回顾,组件传入的参数为组件时的 TS 写法。具体实例如下:

// Profile.tsx
export type ProfileProps = {name: string;
};export const Profile = ({ name }: ProfileProps) => {return <div>Private Profile component. Name is {name}</div>;
};// Private.tsx
type PrivateProps = {isLoggedIn: boolean;Component: React.ComponentType<ProfileProps>; // 因为我们制定传入的组件需要带有一个name属性,所以我们这里采用了TS的泛型来定义组件的参数
};export const Private = ({ isLoggedIn, Component }: PrivateProps) => {if (isLoggedIn) {return <Component name="Vishwas" />;} else {return <Login />;}
};
http://www.lryc.cn/news/161753.html

相关文章:

  • 性能炸裂c++20协程+iocp/epoll,超轻量高性能异步库开发实战
  • 自定义Dynamics 365实施和发布业务解决方案 - 4. 自动化业务流程
  • Lua03——开发环境搭建
  • Redis 非关系型数据库 配置与优化
  • docker笔记8:Docker网络
  • C# 共享项目的应用
  • Linux之基于HTTPS的静态网站
  • ChatGPT在机器人护理和老年人支持中的潜在角色如何?
  • LeetCode:261. 以图判树 - Python
  • Linux目录结构和远程使用
  • 淘宝销量展示方式变更背后的逻辑
  • Bytebase 和 GitLab 签署 Technology Partner 技术合作伙伴协议
  • 杭州高职画室哪家好?如何选择高职画室?高职美术学习选哪家画室?
  • 原型模式简介
  • SpringMVC(一)
  • 树的基本概念和存储结构
  • 深圳企业制作宣传片群体定位的重要性
  • 2309亚当arsd的11.1版本
  • spring---第七篇
  • 编程要搞明白的东西(二)
  • 检索与毒害 —— 对抗人工智能供应链攻击
  • Linux 禁止用户或 IP通过 SSH 登录
  • 14.Redis 主从复制
  • 常见的图像格式介绍:RAW、RGB、YUV
  • 极简极速-Bitset (bitmap)实现考勤打卡场景
  • word如何插入图片?3种常用的方法
  • Python/C API - 模組,型別,Tuple,例外和引用計數
  • 人工智能轨道交通行业周刊-第59期(2023.9.4-9.10)
  • ASP.NET Core 中的 MVC架构
  • C# PSO 粒子群优化算法 遗传算法 随机算法 求解复杂方程的最大、最小值