千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 如何将React功能组件与类型脚本结合使用

如何将React功能组件与类型脚本结合使用

来源:千锋教育
发布人:syq
时间: 2022-09-19 11:24:48 1663557888

  当我们使用 React 开发项目时,最常用的组件应该是组件,组件分为功能组件和类组件,我们可以按如下方式定义它们:

React功能组件与类型脚本

  定义功能组件

6

  定义类组件

7

  在本文中,我将介绍使用TypeScript定义功能组件的4种方法,并且在使用过程中需要注意几个问题。

  · 如何使用类型脚本

  1 定义功能组件。使用反应

  2.使用 JSX。要件

   3.直接

  4.使用反应道具与孩子

  ·提示

  ∘1.功能组件不能返回布尔值

   2.无法使用 Array.fill() 填充组件

  3.支持通用组件

  ·引用

  如何使用类型脚本定义功能组件

  功能组件通常采用一个参数并返回 JSX 元素或 。propsnull

  当我们需要使用TypeScript来定义功能组件时,我们有4种方法,每种方法都有自己的优点和缺点,具体取决于具体情况。

  1.使用反应

  由于 React 不是使用 TypeScript 开发的,因此它使用社区开发的包提供的类型,该包具有一个泛型类型,允许我们将类型添加到功能组件中。@type/reactFC

8

  这是 的简写。React.FCReact.FunctionComponent

  当组件包含子元素时,类型脚本将提示一条警告:

9

  使用反应

  提示警告内容:

10

  这现已弃用。有关具体讨论,请参阅以下两个链接:

  从打字机模板 #8177 中删除 React.FC;

  类型脚本 + 反应: 为什么我不使用反应FC。

  阿拉伯数字。使用 JSX。元素

  使用类型作为功能组件的返回值类型。当组件的返回值不是类型时,类型脚本将提示错误。JSX.ElementJSX.Element

11

  使用 JSX。元素

  3.直接定义完整类型

  由于组件包含子元素,它将隐式传递一个属性,导致定义的参数类型出现错误,因此我们可以直接定义一个完整的参数接口,包括属性的类型:React children children

12

  直接定义完整类型

  4.使用反应道具与孩子

  第三种方法每次手动编写属性类型比较麻烦,然后我们可以使用类型,它本身封装了类型声明:children React.PropsWithChildren children

13

  因此,使用类型来定义功能组件,而不必处理 :React.PropsWithChildren children

14

  使用反应道具与孩子

  技巧

   1.功能组件不能返回布尔值

  当我们在函数组件中使用条件语句时,如果 React 返回非 JSX 元素或非空值,它将引发错误:

15

  功能组件不能返回布尔值

  正确的方法是让函数组件返回有效的 JSX 元素或 null:

16

  当然,你不能这样写,当属性是 时,它也会出错:useRenderfalse

17

   阿拉伯数字。无法使用阵列填充组件

  当我们的组件直接返回 结果时,类型脚本会引发错误。Array.fill()

15

  无法使用阵列填充组件

  提示以下内容:

19

  为了解决这个问题,我们可以定义函数的返回类型:

20

  3.支持通用组件

  当使用TypeScript开发 React 功能组件时,您还可以使用泛型来约束和声明泛型组件,这可以使我们的组件更加灵活。

  它可以像这样使用:

21

  支持通用组件

  更高级的用法在通用组件一章中进行了介绍:

22

  通用组件

  引用

  反应

  反应类型脚本备忘单

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区