react是组件化开发吗
时间:2022-04-24 [网络编程]作者:fabuyuan 浏览:7 次
react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。
本教程操作环境:Windows10系统、react17.0.1版、Dell G3电脑。
react是组件化开发吗
react是组件化开发
1.组件化思想
- 当人们面对复杂问题的处理方式:
- 将复杂的问题进行拆解, 拆分成很多个可以处理的小问题
- 再将其放在整体当中,你会发现大的问题也会迎刃而解
- 其实上面的思想就是分而治之的思想:
- 分而治之是软件工程的重要思想,是复杂系统开发和维护的基石
- 而前端目前的模块化和组件化都是基于分而治之的思想
2.什么是组件化开发呢?
- 组件化也是类似的思想:
- 如果我们将一个页面中全部逻辑放在一起, 处理起来会变得非常复杂, 不利于后续管理及扩展
- 但如果我们将一个页面拆分成一个个小的功能模块, 每个功能完成自己这部分独立功能, 那么整个页面的管理和维护变得非常容易
- 我们需要通过组件化的思想来思考整个应用程序:
- 我们将一个完整的页面分成很多个组件
- 每个组件都用于实现页面的一个功能块
3.React的组件化
- 组件化是 React 的核心思想,前面我们封装的 App 本身就是一个组件
- 组件化提供了一种抽象,让我们可以开发出一个个独立可复用的小组件来构造我们的应用
- 任何的应用都会被抽象成一颗组件树
- 组件化思想的应用:
- 尽可能的将页面拆分成一个个小的、可复用的组件
- 这样让我们的代码更加方便组织和管理,并且扩展性也更强
4.React组件分类
- React的组件相对于 Vue 更加的灵活和多样,按照不同的方式可以分成很多类组件:
- 根据组件的定义方式,可以分为:函数组件(Functional Component)和类组件(Class Component)
- 根据组件内部是否有状态需要维护,可以分成:无状态组件(Stateless Component)和有状态组件(Stateful Component)
- 根据组件的不同职责,可以分成:展示型组件(Presentational Component)和容器型组件(Container Component)
- 这些概念有很多重叠,但是它们最主要是关注数据逻辑和UI展示的分离:
- 函数组件、无状态组件、展示型组件主要关注UI的展示
- 类组件、有状态组件、容器型组件主要关注数据逻辑
React 创建组件
1.类组件
- 类组件的定义由如下要求:
- 组件的名称是大写字符开头 (无论类组件还是函数组件)
- 类组件需要继承自:
React.Component
- 类组件必须实现
render
函数
- 使用
class
定义一个组件:constructor
是可选的,我们通常在constructor
中初始化一些数据this.state
中维护的就是我们组件内部的数据render()
方法是class
组件中唯一必须实现的方法
2.render函数的返回值
当
render
函数被调用时, 它会检查this.props
和this.state
的变化并返回以下类型之一
- React元素
- 通常通过
JSX
创建 - 例如:
<p/>
会被React
渲染为DOM
节点,\<MyComponent/>
会被React
渲染为自定义组件 - 无论是
<p/>
还是<MyComponent/>
均为React
元素
- 通常通过
- 数组或 fragments: 使得
render
方法可以返回多个元素 - Portals: 可以渲染子节点到不同的
DOM
子树中 - 字符串或数值类型: 他们在
DOM
中会被渲染为文本节点 - 布尔类型或null: 什么都不渲染
3.函数组件
函数组件是使用
function
来进行定义的函数, 只是这个函数会返回和类组件中render
函数一样的内容
- 函数组件的特点 (后面会讲hooks, 就不一样了)
- 没有生命周期, 也会被更新并挂载, 但是没有生命周期函数
- 没有 this (组件实例)
- 没有内部状态 (state)
推荐学习:《react视频教程》
以上就是react是组件化开发吗的详细内容,更多请关注站长家园其它相关文章!
本文标签: React
转载请注明来源:react是组件化开发吗
本文永久链接地址:https://www.adminjie.com/post/11534.html
免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!
版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。
更多精彩内容
- VUE中V-IF条件判断改变元素的样式操作
- Discuz如何解决安装时报错run_sql_error
- 低版本VS项目在VS2019无法正常编译的问题
- PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
- Oracle数据库的实例/表空间/用户/表之间关系简单讲解
- RSA2是啥?PHP-RSA2签名验证怎么实现?
- 华为dubal20是什么型号
- html5的标题标记一共有几个等级
- ana an00华为是什么型号
- 电脑显示信号线无连接是什么意思
- app是什么应用程序的简称
- html5中onclick是什么意思
- vivov1818a是什么手机型号
- 超链接的作用是什么
- 小程序大小超限除了分包还能怎么做?如何避免和解决大小限制?

- 最新文章
-
-
linux中什么是静态路由
在linux中,静态路由是路由项由手动设置的一种路由方式;即使网络状态已经改变或重新被组态,静态路由也是固定不变的,静态路由由网络管理员逐项加入路由表,可用“r...
-
php数组相加会合并重复值么
php数组相加不会合并重复值。php中可使用“+”运算符将一个或多个数组相加起来,会合并这些数组返回一个新数组,语法“数组1+数组2+..”,后面数组的元素会追...
-
php怎么去掉数组前一个元素
方法:1、用“array_values($arr)”将数组转为索引数组;2、用“array_search(值,数组)”从索引数组中搜索值,并返回对应索引;2、用...
-
浅析nodejs项目中的package.json的常见配置属性
本篇文章带大家了解一下node项目中的package.json配置文件,聊聊package.json中一些常见配置属性、环境相关属性、依赖相关属性和三方属性,希...
-
聊聊如何利用uniapp开发一个贪吃蛇小游戏!
如何利用uniapp开发一个贪吃蛇小游戏?下面本篇文章就手把手带大家在uniapp中实现贪吃蛇小游戏,希望对大家有所帮助!第一次玩贪吃蛇还隐约记得是?️后父亲给...
-
- 热门文章
-
-
VUE中V-IF条件判断改变元素的样式操作
这篇文章主要介绍了VUE中V-IF条件判断改变元素的样式操作,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧...
-
Discuz如何解决安装时报错run_sql_error
问题环境VMware虚拟机Centos7.3PHP7.0MySQL8.0NGINX1.14Discuz3.4问题还原本地环境为PHP5.6+MySQL5.6在安...
-
低版本VS项目在VS2019无法正常编译的问题
低版本VS项目在VS2019无法正常编译的问题这里指的编译并不准确,只是为了方便说明。后有(未安装),201?...
-
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
实现原理使用redis链表来做,因为pop操作是原子的,即使有很多用户同时到达,也是依次执行,推荐使用。实现步骤第一步,先将商品库存入队列/**.trigge...
-
Oracle数据库的实例/表空间/用户/表之间关系简单讲解
完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。我们用这些高级权限账号...
-