React 入门第三步:了解组件的概念及应用

开发 前端
组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思。从概念上类似于 JavaScript 函数。

[[419758]]

组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思。从概念上类似于 JavaScript 函数。

它接受任意的入参(即 “props”),并返回用于描述页面展示内容的 React 元素。分为函数组件与 class 类组件。

学习组件之前,可以先安装一个 VS Code 插件,直接搜索 react , 选择下载量最高的就行了。

函数组件与类组件

顾名思义,函数组件就是使用函数创建的组件,类组件就是使用类创建组件,安装好插件之后,可以直接使用简写补全功能创建对应插件。

注意,首字母要大写。

函数组件的创建

编辑器快捷方式:rfce

  1. import React from'react' 
  2.  
  3. functionComponentFun() { 
  4.   return ( 
  5.     <div> 
  6.       <h2>单文件函数组件</h2> 
  7.     </div> 
  8.   ) 
  9.  
  10. exportdefault ComponentFun 

声明函数,并在函数中返回 JSX ,最后导出函数。

类组件的创建

编辑器快捷方式:rce

  1. import React, { Component } from'react' 
  2.  
  3. exportclass ComponentClass extends Component { 
  4.   render() { 
  5.     return ( 
  6.       <div> 
  7.         <h2>单文件类组件</h2> 
  8.       </div> 
  9.     ) 
  10.   } 
  11.  
  12. exportdefault ComponentClass 

类组件需要继承 Component,因此需要进行导入。如果不导入,则需要继承React.Component。

同时,类中需要调用 render() 渲染函数,在渲染函数中,return 返回对应的 JSX。

组件的引入与使用

组件的使用也很简单,按模块化语法引入之后,直接当作标签在 JSX 中使用。

  1. import React from'react' 
  2. // 引入单文件组件 
  3. import ComponentClass from'./ComponentClass' 
  4. import ComponentFun from'./ComponentFun' 
  5.  
  6.  
  7. functionApp() { 
  8.   return ( 
  9.     <div> 
  10.       {/* 使用组件 */} 
  11.       <ComponentClass/> 
  12.       <ComponentFun/> 
  13.     </div> 
  14.   ) 
  15.  
  16. exportdefault App 

因为 JSX 必须有一个根节点,因此在引入使用后,渲染的结果中,会出现多个 div 嵌套,比如下面这样子的:

  1. <divid="root"><div><div><h2>单文件类组件</h2></div><div><h2>单文件函数组件</h2></div></div></div> 

为了解决这个问题,React 提供了 “片段” 组件 Fragment ,它允许你将子列表分组,渲染后不会向 DOM 添加额外节点:

  1. import React, { Component,Fragment } from'react' 
  2.  
  3. exportclass ComponentClass extends Component { 
  4.   render() { 
  5.     return ( 
  6.       <Fragment> 
  7.         <h2>单文件类组件</h2> 
  8.       </Fragment> 
  9.     ) 
  10.   } 
  11.  
  12. exportdefault ComponentClass 

使用也很简单,就是引入后,将 JSX 中的div 根节点替换即可,最终渲染后的 DOM 如下:

  1. <divid="root"><div><h2>单文件类组件</h2><h2>单文件函数组件</h2></div></div> 

 

责任编辑:姜华 来源: 勾勾的前端世界
相关推荐

2012-09-21 14:38:20

Java项目Java开发

2021-09-02 18:46:40

React CSS 组件

2011-12-07 10:22:11

美信云网管阀值

2021-09-01 18:42:57

React Props组件

2021-08-24 05:07:25

React

2021-08-26 00:33:29

React JSX语法

2010-06-30 13:02:30

2013-12-06 13:00:26

TechEd2013Office 365Visual Stud

2014-09-18 16:46:51

大数据应用

2021-01-22 05:38:28

监控SpringbootActuator

2012-07-10 14:19:49

应用程序移动应用

2021-03-02 07:02:45

Linux操作系统

2019-05-15 09:13:47

物联网网关物联网IOT

2009-10-29 15:30:06

VB.NET串口通讯

2012-08-08 17:05:36

App运营

2011-07-13 09:54:22

VMware故障vSphere

2009-02-04 09:45:05

Java SocketSocket APIJava编程

2020-11-04 00:00:29

Kerberos协议身份

2010-10-08 09:24:52

Linux系统管理

2011-05-05 19:42:45

应用变革惠普瞬捷企业
点赞
收藏

51CTO技术栈公众号