邂逅react(九)-component组件化开发

ByteWaltzX
• 阅读 1504

今天想分享一下react的核心知识之组件化开发~~
1.关于组件化的理解:组件化就是把一个页面或者复杂的功能拆解成一个个小组件,让这些小组件各自分工有序配合构成我们的页面或复杂的程序.

2.为什么要组件化:传统的页面或程序开发结构相对复杂,尤其是大型应用程序,页面多,代码耦合性强不好维护,如果能把代码拆解成一个个独立的小模块,类似积木一样,每个都有自己的功能那么开发和维护起来就更加省事,复用性更高,拓展性强,每个组件还可以将内部的小功能拆分成更小的组件,开发起来也更加方便灵活。鉴于以上优势很多主流框架都采用了组件化开发的设计思想。

下面简单聊聊react中的组件
一、react中组建的类型:

1.根据定义划分可分为类组件和函数组件
2.根据状态划分可分为有状态组件和无状态组件
3.根据职责可划分为展示组价和容器组件
  当然还有异步组件、高阶组件等

下面简单聊聊类组件和函数组件

export function FunComponent(){//函数组件
  //没有状态state 没有this(组件实例)
  return (
    <div>
      <h1>我是函数组件</h1>
    </div>
  )
}

class App extends Component {//类组件
  constructor(props){
    super(props)
    this.state={}//存储类组件里的数据 这是类组件的状态
  }
  render() { //渲染当前类组件
    return (      
      <div>
         {/*根节点 */}
        <h1>我是类组件</h1>
        <FunComponent/>{/*类组件里面引用函数组件 组件名开头要大写*/}
      </div>
     );
  }
}
 
export default App;

关于类组件的说明:
1.内部可以定义constructor函数 可以做一些数据的初始化
2.内部有state用来进行数据状态的管理
3.有this实例对象

注意:
1*类组件必须继承自react.Component
2*内部必须实现render函数且要有返回值
3*首字母必须大写

关于组件中return的返回值
1.可以是jsx创建的react元素或引用的组件
2.可以是数组或数字或字符串
3.可以是boolean值或null(boolean或null什么都不展示)
4.fragment片段,portals渲染元素到不同子节点

二、组件常用生命周期:
组件生命周期描述的是一个组件从创建到销毁的过程,在某些特定阶段可以做一些事情,回调函数处理一些逻辑
生命周期和生命周期函数
1.mount-->组件第一次在dom树挂载渲染 对应生命周期函数:componentDidMount 组件一挂载就会回调这个生命周期函数
2.unpdate-->组件更新 对应生命周期函数:componentDidUpdate 组件内部一更新就会回调这个函数
3.Unmount-->组件卸载 对应生命周期函数:componentWillUnmount组件将被DOM树移除前回调这个生命周期函数
常用生命周期图解
邂逅react(九)-component组件化开发

  注意:
  1.componentDidMount 组件一挂载立马会回调这个函数 
    依赖DOM操作的方法可以在这里调用 
    建议在这里执行一些网络请求方法 
    添加一些订阅方法 在componentWillUnmount时会移除
  2.componentDidUpdate 组件首次渲染不会调用这个生命周期函数
    组件数据更新重新渲染时调用
  3.componentWillUnmount 组件将要移除时回调的生命周期函数
    一般对事件解绑 有定时器会清除定时器
    

今天的分享完毕 感谢阅读

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
低代码开发平台 | 低代码的衍生历程、优势及未来趋势
通过简单的拖拉拽操作,而不用编写复杂的代码,实现少写代码或者不写代码,就能快速高效完成业务目标。低代码平台演进1.低代码概念低代码是无需编码(0代码)或通过少量代码就可以快速生成应用程序的开发平台。通过可视化进行应用程序开发的方法,具有不同经验水平的开发人员可以通过图形化的用户界面,使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程序。2.低代码衍生历
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
提升前端开发效率的五种实用技术
组件化开发是一种将页面拆分成独立的可重用组件的开发方式。通过组件化开发,我们能够将复杂的界面逻辑拆分成独立的模块,提高代码的复用性和维护性。常用的组件化框架如React、Vue和Angular,它们提供了强大的组件化开发能力,使我们能够轻松构建复杂的用户界面,并提供了组件的生命周期管理和状态管理机制。
ByteWaltzX
ByteWaltzX
Lv1
未曾青梅,青梅枯萎,芬芳满地。
文章
5
粉丝
0
获赞
0