React中的生命周期和子组件

 更新时间:2022年08月28日 14:36:09   作者:公众号_前端每日技巧​​​​​​​  
这篇文章主要介绍了React中的生命周期和子组件,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

组件生命周期

为了说明组件的创建,存在,销毁的过程,react提供了组件的生命周期,共分三大周期:

  • 创建期:说明组件的创建的过程,相当于人的少年
  • 存在期:说明组件的存在的过程,相当于人的中年
  • 销毁期:说明组件的销毁的过程,相当于人的老年

创建创建期

创建期共分五个阶段:

  • ES5开发中,对应五个方法:getDefaultProps,getInitialsate, ​​componentWillMount​​, ​​render​​, ​​componentDidMount​
  • ES6开发中,移除了前两个方法:componentWillMount, render, componentDidMount

第一个阶段 组件定义默认属性数据

defaultProps静态属性中定义

组件尚未创建

第二个阶段 组件初始化状态数据

在构造函数中定义constructor

一定要执行super(props),实现构造函数继承,并且要传递属性数据参数

继承之后,this.props与props就没有区别了

我们为this.state赋值,机可以初始化,

在构造函数中,我们可以访问属性数据,因此可以用属性数据为状态数据赋值

这样就实现了数据有外部流入内部

第三个阶段 组件即将被构建

通过componentWillMount方法定义

此时可以访问到属性数据以及状态数据,并且无法访问虚拟DOM

我们可以提前请求数据,我们也可以为需要在虚拟DOM中使用的插件,初始化。

第四个阶段 渲染组件

我们通过render方法定义

返回值是渲染的虚拟DOM

此时可以访问到属性数据以及状态数据,无法访问虚拟DOM

所以我们在渲染虚拟DOM的时候,可以用属性数据或者状态为虚拟DOM赋值

第五个阶段 组件构建完成

我们通过componentDidMount方法定义

此时可以访问到属性数据以及状态数据,也可以访问虚拟DOM

因此我们可以在这个阶段,发送请求,绑定事件等实现一些交互

该阶段方法执行完毕,标志着组件创建期的结束,存在期的开始,

所以该方法在组件实例化对象的一生中,只执行一次。

我们可以在这个阶段修改状态数据,

一旦​​属性​​​或者​​状态​​数据发生改变,组件将进入存在期。

获取虚拟DOM

在渲染库(react-dom)中,提供了findDOMNode的方法,可以获取虚拟DOM对应的真实DOM元素。

// 定义组件
class GoTop extends Component {
// 2 初始化状态数据
constructor(props) {
super(props);
// 状态
// 用属性数据,为状态数据初始化
this.state = {
text: props.text
}
console.log(222, 'constructor', this, arguments)
}
// 3 组件即将构建
componentWillMount() {
console.log(333, 'componentWillMount', this, arguments, findDOMNode(this))
}
// 4 渲染虚拟DOM
render() {
console.log(444, 'render', this, arguments)
return <span>{this.state.text}</span>
}
// 5 组件构建完成
componentDidMount() {
console.log(555, 'componentDidMount', this, arguments, findDOMNode(this))
}
}
// 1 默认属性数据
GoTop.defaultProps = {
text: '返回顶部'
}
// 渲染组件
render(<GoTop />, app)

子组件

虚拟DOM可以添加子虚拟DOM,组件是对虚拟DOM的封装,因此他们的行为是一致的,组件也可以定义子组件

在​​该组件​​中定义的​​组件​​,我们称之为​​该组件​​的​​子组件​​,​​该组件​​称之为​​父组件​

<Zss>
<Demo />
</Zss>

Zss组件就是父组件,Demo组件就是子组件。

组件是完整独立的,因此数据不会共享,想让组件之间共享数据,我们要实现组件间的通信。

到此这篇关于React中的生命周期和子组件的文章就介绍到这了,更多相关React 生命周期 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • React Native使用fetch实现图片上传的示例代码

    React Native使用fetch实现图片上传的示例代码

    本篇文章主要介绍了React Native使用fetch实现图片上传的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • React中项目路由配置与跳转方法详解

    React中项目路由配置与跳转方法详解

    这篇文章主要为大家详细介绍了React中项目路由配置与跳转方法的相关资料,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-08-08
  • Electron打包React生成桌面应用方法详解

    Electron打包React生成桌面应用方法详解

    这篇文章主要介绍了React+Electron快速创建并打包成桌面应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-12-12
  • react中使用video.js的踩坑记录

    react中使用video.js的踩坑记录

    这篇文章主要介绍了react中使用video.js的踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解react的两种动态改变css样式的方法

    详解react的两种动态改变css样式的方法

    这篇文章主要介绍了详解react的两种动态改变css样式的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • React实现数字滚动组件numbers-scroll的示例详解

    React实现数字滚动组件numbers-scroll的示例详解

    数字滚动组件,也可以叫数字轮播组件,这个名字一听就是非常普通常见的组件。本文将利用React实现这一组件,感兴趣的小伙伴可以了解一下
    2023-03-03
  • 解决react-connect中使用forwardRef遇到的问题

    解决react-connect中使用forwardRef遇到的问题

    这篇文章主要介绍了解决react-connect中使用forwardRef遇到的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • React router动态加载组件之适配器模式的应用详解

    React router动态加载组件之适配器模式的应用详解

    这篇文章主要介绍了React router动态加载组件之适配器模式的应用 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • 详解升级react-router 4 踩坑指南

    详解升级react-router 4 踩坑指南

    本篇文章主要介绍了详解升级react-router 4 踩坑指南,主要是对react-router 4升级的踩坑总结,有兴趣的可以了解一下
    2017-08-08
  • React UI组件库之快速实现antd的按需引入和自定义主题

    React UI组件库之快速实现antd的按需引入和自定义主题

    react入门学习告一段路,下面这篇文章主要给大家介绍了关于React UI组件库之快速实现antd的按需引入和自定义主题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论