使用 function 构造函数创建组件和使用 class 关键字创建组件

使用 function 构造函数创建组件:

 

如果想要把组件放到页面中,可以把构造函数的名称,当作 组件的名称,以 HTML标签形式引入页面中,
因为在React中,构造函数就是一个最基本的组件。

 

注意:

 

组件的首字母必须是大写
因为React在解析所有的标签的时候,是以标签的首字母来区分的,
如果标签的首字母是小写,那么就按照 普通的 HTML 标签来解析,
如果首字母是大写,则按照组件的形式去解析渲染。


 

格式:

创建:

 

 function Hello(props) {// 在组件中,如果想要使用外部传递过来的数据,必须,显示的在 构造函数参数列表中,定义 props 属性来接收;// 通过 props 得到的任何数据都是只读的,不能从新赋值// props.name = '000'。无效return <div><h1>这是在Hello组件中定义的元素 --- {props.name}</h1></div>}

 

使用:

ReactDOM.render(<div>{
/* <Hello name={person.name} age={person.age} gender={person.gender} address={person.address}></Hello> *//* 上面的方法太麻烦,下面使用ES6中的属性扩散‘...’ */}<Hello {...person}></Hello></div>, document.getElementById('app'))// 这里 ...Obj  语法,是 ES6中的属性扩散, 表示,把这个对象上的所有属性,展开了,放到这个位置

 

 

 

使用 class 关键字创建组件

class Person extends React.Component{render(){
// 在render函数中,必须返回一个null或者符合规范的虚拟DOM元素
return <div><h1>这是用 class 关键字创建的组件!</h1></div>;
}
}
```

区别:

 

使用 function 构造函数创建的组件,内部没有 state 私有数据,只有 一个 props 来接收外界传递过来的数据;所以
叫做【无状态组件】
使用 class 关键字 创建的组件,内部,除了有 this.props 这个只读属性之外,还有一个 专门用于 存放自己私有数据的 this.state 属性,这个 state 是可读可写的!
所以叫做【有状态组件】

有状态组件和无状态组件,最本质的区别,就是有无 state 属性;同时, class 创建的组件,有自己的生命周期函数,但是,function 创建的 组件,没有自己的生命周期函数;

使用场景:
1. 如果一个组件需要存放自己的私有数据,或者需要在组件的不同阶段执行不同的业务逻辑,此时,非常适合用 class 创建出来的有状态组件;
2. 如果一个组件,只需要根据外界传递过来的 props,渲染固定的 页面结构就完事儿了,此时,非常适合使用 function 创建出来的 无状态组件;(使用无状态组件的好处就是运行速度会快一点)
 

 

转载于:https://www.cnblogs.com/ll15888/p/11168969.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring.NET 1.3.1 正式版已发布

Spring.NET 1.3.1 下载地址为http://www.springframework.net/download.html 正如已经提到的其他地方&#xff0c;这将是Spring.NET的最终版本提供支持的。NET1.x中Spring.NET的未来版本将只针对。NET 2.0和更高版本&#xff0c;让Spring.NET更积极地利用近期功能的更多信息在。…

天地图 android sdk,我想使用天地图sdk,第三方插件的教程走通了,现在卡住了

用Android Studio按照教程&#xff0c;增加第三方插件的例子走通了&#xff0c;运行后的app可以alert出来了&#xff0c;方法可以用。但是现在&#xff0c;怎么把天地图弄出来啊。本人是前端&#xff0c;不会安卓。天地图官网的使用步骤&#xff1a;1) 将API文件tiandituapi.ja…

[html] 如何优化大数据列表(10万+)的性能?说说你的方案

[html] 如何优化大数据列表&#xff08;10万&#xff09;的性能&#xff1f;说说你的方案 定时器批量绘制, 过滤&#xff0c;查询使用serviceWorker ?个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论…

Java容器Stack

Stack继承关系 Collection 接口AbstractCollectionAbstractListVectorStack 方法 public E push 元素在栈顶&#xff0c;最后一个元素 public synchronized E pop() 删除并返回栈顶元素&#xff08;最后一个&#xff09; public synchronized E peek()返回栈顶元素&#xff08…

android wifi连接手机,Android手机无线连接利器-AirDroid

AirDroid是一款可以在电脑的浏览器上对手机进行管理的应用&#xff0c;需要wifi网络支持&#xff0c;手机安装启用服务后&#xff0c;在pc的浏览器即可登陆进行管理和操作&#xff0c;可以管理联系人、短信、文件、应用、照片、铃声、音乐、通话记录&#xff0c;还可以快速搜索…

[html] 如何使用纯HTML实现跑马灯的效果?

[html] 如何使用纯HTML实现跑马灯的效果&#xff1f; HTML marquee 元素用来插入一段滚动的文字。 但是该元素已废弃。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

字符串处理

Title#region GetSubString /// <summary> /// 取得指定开始和结束字符串中间的数据串 /// </summary> /// <param name"content"></param> /// <param name"startStr"></param> /// <param name"endSt…

HTTP管线化(HTTP pipelining)

默认情况下http协议中每个传输层连接只能承载一个http请求和响应&#xff0c;然后结束。 HTTP是一个简单的协议。客户进程建立一条同服务器进程的 T C P连接&#xff0c;然后发出请求并读取服务器进程的响应。服务器进程关闭连接表示本次响应结束。服务器进程返回的文件通常…

[html] 如果列表元素li的兄弟元素为div,会产生什么情况?

[html] 如果列表元素li的兄弟元素为div&#xff0c;会产生什么情况&#xff1f; 单纯的对html来说主要是破坏了语义结构吧, css方面来说不好统一控制样式&#xff0c;div默认也没有list-style个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xf…

RFC函数的初步使用-同步

1、由于没有外围系统&#xff0c;采用不同SAP不同client之间进行测试。 首先在A-client搭建需要被调用的RFC函数。在A-client里运行SE37创建函数 在属性页签选择“远程启用的模块” 设定inport参数&#xff0c;传入人员名称去取usr21中的值 设定export参数&#xff0c;其中zper…

C# 繁体,简体互转

首先对Miscrosoft.VisualBasic类的引用. using Microsoft.VisualBasic; public static string Traditional2Simplified(string str) { //繁体转简体 return (Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.Si…

[html] html的哪个标签可以预渲染?

[html] html的哪个标签可以预渲染&#xff1f; link 标签的 relpreload个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

2017蓝桥杯c语言C组承压计算,蓝桥杯2017Java B组---分巧克力and承压计算

分巧克力package lala;/**儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力&#xff0c;其中第i块是Hi x Wi的方格组成的长方形。为了公平起见&#xff0c;小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要…

HDU2138 随机素数测试 Miller-Rabin算法

题目描述 Give you a lot of positive integers, just to find out how many prime numbers there are.. In each case, there is an integer N representing the number of integers to find. Each integer won’t exceed 32-bit signed integer, and each of them won’t be …

[html] 你写一个页面需要多长时间?

[html] 你写一个页面需要多长时间&#xff1f; 和页面结构&#xff0c;样式&#xff0c;交互设计正相关个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...

Android开发平台中&#xff0c;可通过TelephonyManager 获取本机号码。 TelephonyManager phoneMgr(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);txtPhoneNumber.setText(phoneMgr.getLine1Number()); //txtPhoneNumber是一个EditText 用于显示手机号注…

vba copy sheet

Sub copySheet() Dim wkbk As Workbook Set wkbk Workbooks.open("源文件.xls") 先打开要复制的文件 wkbk.sheets(1).Copy thisworkbook.sheets(1) 再将此文件中第一个工作表复制到当前工作簿的第一个工作表前 End Sub 这样是最简单的代码了&#xff0c;但是有些限制…

Android仿ios二级菜单侧滑,仿IOS的列表项滑动菜单——ListItemMenu

一个简单的仿IOS的列表项滑动菜单(也不知道怎么描述比较好)。顺手做出来的小东西&#xff0c;就分享给大家了。仿iOS列表项滑动菜单:1、滑动出现菜单&#xff0c;越界阻尼效果&#xff1b;2、删除列表项效果。GitHub地址:https://github.com/zarics/ListItemMenu1.[代码]布局示…

[html] 你认为一个好的布局应该是什么样的?有哪些需要注意的地方?

[html] 你认为一个好的布局应该是什么样的&#xff1f;有哪些需要注意的地方&#xff1f; 先布局整体,再细分到模块; 先抽离组件再分离业务个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与…

判断cloudblob是否存在

这是开博的第一篇&#xff0c;还要废话一下。我写的很多内容都是网上找资料然后自己总结出来的&#xff0c;原出处已经很难找到了&#xff0c;所以不会标出引用的内容。如果侵犯到您的版权&#xff0c;请和我联系&#xff0c;我会删改相关的内容。 cloudblob 是azure blob的一个…