返回顶部
首页 > 资讯 > 前端开发 > JavaScript >浅谈React的React.FC与React.Component的使用
  • 725
分享到

浅谈React的React.FC与React.Component的使用

2024-04-02 19:04:59 725人浏览 薄情痞子
摘要

目录一、React.FC<> 二、class xx extends React.Component React 的组件可以定义为 函数(React.FC<>)

React 的组件可以定义为 函数(React.FC<>)或class(继承 React.Component) 的形式。

一、React.FC<>

1.React.FC是函数式组件,是在typescript使用的一个泛型,FC就是FunctionComponent的缩写,事实上React.FC可以写成React.FunctionComponent:


const App: React.FunctionComponent<{ message: string }> = ({ message }) => (
  <div>{message}</div>
);

2.React.FC 包含了 PropsWithChildren 的泛型,不用显式的声明 props.children 的类型。React.FC<> 对于返回类型是显式的,而普通函数版本是隐式的(否则需要附加注释)。

3.React.FC提供了类型检查和自动完成的静态属性:displayName,propTypes和defaultProps(注意:defaultProps与React.FC结合使用会存在一些问题)。

4.我们使用React.FC来写 React 组件的时候,是不能用setState的,取而代之的是useState()、useEffect等 Hook api

例子(这里使用阿里的Ant Desgin Pro框架来演示):


const SampleModel: React.FC<{}> = () =>{   //React.FC<>为typescript使用的泛型
   const [createModalVisible, handleModalVisible] = useState<boolean>(false); 
   return{
   {}
   <Button style={{fontSize:'25px'}}  onClick={()=>handleModalVisible(true)} >样例</Button>
   {}
   <Model onCancel={() => handleModalVisible(false)} ModalVisible={createModalVisible} /> 
  }

二、class xx extends React.Component

如需定义 class 组件,需要继承 React.Component。React.Component是类组件,在TypeScript中,React.Component是通用类型(aka React.Component<PropType, StateType>),因此要为其提供(可选)prop和state类型参数:

例子(这里使用阿里的Ant Desgin Pro框架来演示)::


class SampleModel extends React.Component {
  state = {
    createModalVisible:false,
  };

  handleModalVisible =(cVisible:boolean)=>{
    this.setState({createModalVisible:cVisible});
  };
  return {
  {}
   <Button onClick={()=>this.handleModalVisible(true)} >样例</Button>
   {}
   <Model onCancel={() => handleModalVisible(false)} ModalVisible={this.state.createModalVisible} /> 
  }

ps:简单来说,不知道用什么组件类型时,就用 React.FC。

到此这篇关于浅谈React的React.FC与React.Component的使用的文章就介绍到这了,更多相关React的React.FC与React.Component内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈React的React.FC与React.Component的使用

本文链接: https://lsjlt.com/news/134595.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈React的React.FC与React.Component的使用
    目录一、React.FC<> 二、class xx extends React.Component React 的组件可以定义为 函数(React.FC<>)...
    99+
    2024-04-02
  • 浅谈React 的引入
    目录1. CDN 引入1.1 react (先引入)1.2 react-dom (后引入)1.3 查看是否成功引入 react2. Webpack 引入3. create-react...
    99+
    2024-04-02
  • 浅谈react useEffect闭包的坑
    问题代码 看一段因为useEffect导致的闭包问题代码 const btn = useRef(); const [v, setV] = useState(''); use...
    99+
    2024-04-02
  • 关于 React 中 useEffect 使用问题浅谈
    目录前言优化前优化后总结前言 最近看了一下 ant-design 中的 tree 组件源码时发现 useEffect 中根据 props 来计算当前函数组件的 state 的,感到好...
    99+
    2024-04-02
  • 浅谈React中的浅比较是如何工作的
    React 中浅比较的概念无处不在,它在不同的流程中起着关键的作用,也可以在React组件的多个生命周期中找到。比如,React Hooks中的依赖数组,通过React.memo进行...
    99+
    2024-04-02
  • 浅谈Java ThreadPoolExecutor的使用
    目录一、前言二、ThreadPoolExecutor三、构造函数参数解析四、总结一、前言 线程池主要由以下4个核心组件组成。 线程池管理器:用于创建并管理线程池 工...
    99+
    2024-04-02
  • 浅谈swoole的作用与原理
    目录PHP 中的 Node ?Swoole 到底是什么?如何让它运行?使用 Docker 运行 SwooleSwoole 可以做什么?基于 Swoole 实现 HTTP 服务HTTP...
    99+
    2024-04-02
  • 浅谈React Refs 使用场景及核心要点
    目录什么是 Refs?使用方式Refs 核心要点避免重复创建 ref 内容ref.current 存储的内容修改是突变ref 作为数据存储时内容的变化不会引起 re-renderre...
    99+
    2024-04-02
  • 浅谈Android Content Provider的使用
    Content Provider:一个组件,必须放在应用的主包或应用的子包之下; 组件的配置需要在清单文件中进行配置;content provider需要在applicatio...
    99+
    2022-06-06
    content Android
  • 浅谈Apache Maven ToolChains的使用
    目录简介Toolchains的介绍Toolchains的例子总结简介 因为JDK的版本现在以每半年一次的速度在飞速发展。不同的JDK版本就有不同的java路径,我们在使用Maven的...
    99+
    2024-04-02
  • 浅谈Java中FastJson的使用
    FastJson的使用 使用maven导入依赖包 <!--下边依赖跟aop没关系,只是项目中用到了 JSONObject,所以引入fastjson--> <de...
    99+
    2024-04-02
  • 浅谈Web Storage API的使用
    目录一、浏览器的本地存储技术1.1、sessionStorage1.2、localStorage二、Web Storage相关接口三、浏览器兼容性四、隐身模式五、使用Web Stor...
    99+
    2024-04-02
  • 浅谈DjangoAdmin的初步使用
    目录创建管理员用户更改admin后台语言应用后端管理功能完善设置模型名设置显示的字段后端管理系统名称创建管理员用户 命令行输入python manage.py createsuper...
    99+
    2024-04-02
  • 浅谈React Router关于history的那些事
    如果你想理解React Router,那么应该先理解history。更确切地说,是history这个为React Router提供核心功能的包。它能轻松地在客户端为项目添加基于loc...
    99+
    2024-04-02
  • 浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
    (一)、tf.train.Saver() (1). tf.train.Saver() 是用来保存tensorflow训练模型的,默认保存全部参数 (2). 用来加载参数,注:只加载存...
    99+
    2024-04-02
  • 浅谈location.search与location.hash的问题
    location.search和location.hash是JavaScript中URL对象的两个属性,用于获取和设置URL中的查询...
    99+
    2023-08-11
    location.hash
  • 浅谈Android中视图动画的属性与使用
    简介 Android动画主要包括视图动画和属性动画,视图动画包括Tween动画和Frame动画,Tween动画又包括渐变动画、平移动画、缩放动画、旋转动画。 Tween动画的...
    99+
    2022-06-06
    属性 视图 动画 Android
  • 浅谈Go语言多态的实现与interface使用
    目录一、多态的含义二、抽象类与接口三、Golang中的接口四、总结一、多态的含义 对于Java或者是C++而言,我们在使用变量的时候,变量的类型是明确的。但是如果我们希望它可以宽松一...
    99+
    2024-04-02
  • 浅谈react路由传参的几种方式
    第一种传参方式,动态路由传参 通过设置link的path属性,进行路由的传参,当点击link标签的时候,会在上方的url地址中显示传递的整个url <Link to='/...
    99+
    2024-04-02
  • 浅谈React组件props默认值的设置
    目录前言解构props时设置默认值使用defaultProps进行额外的类型校验结语前言 在编写react组件的时候,为了兼容一些分支逻辑,我们经常会给组件的props设置一些默认值...
    99+
    2023-05-17
    React props默认值 props 默认值
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作