【React】: React的生命周期

这篇具有很好参考价值的文章主要介绍了【React】: React的生命周期。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

生命周期的每个阶段总是伴随着一些方法的调用,这些方法就是生命周期的钩子函数
钩子函数的作用:为开发人员在不同操作阶段提供了十几
只有 类组件 才有生命周期
 
生命周期的图片:

【React】: React的生命周期

 同时有:

【React】: React的生命周期

1.1 创建时 的生命周期执行顺序

 编写以下代码,从而验证constructor,render,componentDidMount的顺序:

class App5 extends React.Component
{
  constructor(props)
  {
    super(props)

    console.warn("生命周期钩子函数:constructor")
  }

  componentDidMount()
  {
    console.warn("生命周期钩子函数:componentDidMount")
  }

  render()
{
  console.warn("生命周期钩子函数:render")
  return (
<div>
<h3></h3>
<h1>统计豆豆被打的次数:</h1>
<button id='btn'>打豆豆</button>
</div>

  )
}
}

ReactDOM.render(<App5/>,document.getElementById('root9'))

在开发者工具中发现执行顺序为:

【React】: React的生命周期【React】: React的生命周期

当然我们对这三个状态还有以下总结:

【React】: React的生命周期

 文章来源地址https://www.toymoban.com/news/detail-480020.html

备注:不能在render里调用setstate的原因是:在render里既能够更新状态,也会更新ui,具体可以参考前面的生命周期图,render里调用setstate,而setstate也会继续调用render,这样就会导致递归调用,从而导致error。

一定要在render里进行调用setstate,我们可以采用箭头函数,同时可以将this从render当中抽离出来,这样相当于在生命周期的“更新时”再继续更新Ui,代码如下:

class AppThree extends React.Component
{

  state={
    count:0
  }

  //组件当中的state,可以通过this.state来进行调用
  //使用setState,来修改数据,直接使用this.state.count+1,来修改是行不通的
  //备注:如果直接使用事件抽离的方法,把render函数当中的逻辑抽离出来,但是在当前class的其他
  //的函数当中,是无法调用到this的。 因此在其他函数中无法调用this.setState是肯定的。

  render(){
    return (
      <div>
        <h1>计数器</h1>

        <button onClick={() => {
          this.setState({
            count:this.state.count+1
          })

        } }>
        +1</button>
        <div>这是一个有状态组件当中的数据count。{this.state.count}</div>
      </div>
    )
  }
 
}

这样就可以保证这里的this不是指的render里的this,而是render外部的this。当然还可以将这个this.setstate的逻辑进行抽离出来:

class AppSix extends React.Component
{


  state={
    count:0
  }

  onIncrement = () => 
  {
    this.setState({
      count:this.state.count+1
    })
  }

  render(){
    return (
      <div>
        <h1>计数器</h1>
        {/*在react当中,onclick方法都需要用花括号括起来,再来表示其中的方法,这里的箭头函数可以直接实现调用,只是没有对这个箭头函数
        进行命名,也就是令 hello = () => this.onIncrement(),是否命名都一样的
        */}
        <button onClick={this.onIncrement}>+1</button>
    )
  }
 
}


ReactDOM.render(<AppSix />, document.getElementById('event_six'))

对于componentDidMount,我们可以在里面进行网络请求和dom操作,因为它是等渲染完成后,才开始进行这个生命进程。

1.2 更新时的生命周期

在更新时,也就是值的初始的渲染都完成了,在渲染完成后,用户如果点击了界面,网页如何使用钩子函数对不同状态下的网页进行检测和更新。有三种情况都会导致组件进行重新渲染,分别是调用:

  1. New props(新参数被调用)
  2. setState() 
  3. forceUpdate() : 也就是强制更新
class App6 extends React.Component{

constructor(props)
{
  super(props)

  this.state={
    count:0
  }
}

handleClick= () =>
{
  this.setState({
    count:this.state.count+1
  })
}


render()
{
  return (
    <div>
      <h3>5.2 更新时的生命周期</h3>
      <Counter2 count={this.state.count }/>
      <button onClick={this.handleClick}>打豆豆</button>
    </div>

  )

}

}

class Counter2 extends React.Component
{
  render()
  {
    return <h3>统计豆豆被打的次数:{this.props.count}</h3>
  }


}


ReactDOM.render(<App6/>,document.getElementById('root10'))

 这里用到了子组件counter2,并且子组件接受到了参数props,因此在接受到了参数props后,确实会对ui进行更新,也就是进行重新渲染,我们点击一次按钮,子组件都会接受到一次参数,这样打豆豆的次数就会发生变化。

我们可以看到ComponentDidUpdate()是在render函数之后,才开始执行的,因此有以下的的图片:

【React】: React的生命周期

 

 

1.3 卸载时的生命周期

【React】: React的生命周期

 我们在打完豆豆超过3次后,子组件消失,因此可以使用compomentWillUnmount函数,执行清理工作。代码如下:

class App6 extends React.Component{

constructor(props)
{
  super(props)

  this.state={
    count:0
  }
}

handleClick= () =>
{
  this.setState({
    count:this.state.count+1
  })
}


render()
{
  return (
    <div>
      <h3>5.2 更新时的生命周期</h3>
        {
          this.state.count > 3 ? (
            <p>豆豆被打死了</p>

          ) :(
            <Counter2 count={this.state.count }/>
          )

        }

     
      <button onClick={this.handleClick}>打豆豆</button>
    </div>

  )

}

}

class Counter2 extends React.Component
{
  render()
  {
    console.warn("子组件--更新时--render函数被渲染")
    return <h3>统计豆豆被打的次数:{this.props.count}</h3>
  }

  componentDidUpdate()
  {
    console.warn("子组件--更新时--componentDidUpdate函数被渲染")
    
  }

  componentWillUnmount()
  {
    //我们在父组件当中规定了这个子组件在超过3次之后销毁,因此销毁后应该调用这个函数
    console.warn("子组件--生命周期钩子函数: componentWillUnmount")
  }


}


ReactDOM.render(<App6/>,document.getElementById('root10'))

 

 我们在发现子组件消失后,确实compomentWillUnmount函数被执行了,warning被打印出。

 

 

 

到了这里,关于【React】: React的生命周期的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue--》详解Vue组件生命周期的三个阶段

    目录 组件生命周期 创建阶段 beforeCreate阶段: created阶段: beforeMount阶段

    2024年01月22日
    浏览(73)
  • 深入理解 Java Bean 的生命周期及各个阶段解析

    Java Bean是Java编程中经常使用的重要概念,它是可重用、可移植、可序列化的组件。在Java开发中,我们常常会遇到Bean对象,但是对于Bean的生命周期和各个阶段可能并不完全了解。本文将深入探讨Java Bean的生命周期,逐步解析Bean对象从创建到销毁的各个重要阶段。 Java Bean是一

    2024年02月14日
    浏览(45)
  • JVM工作原理与实战(六):类的生命周期-连接阶段

    JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载(Loading) 2.连接(Linking) 3.初始化(Initialization) 4.使用(Using) 5.卸载(Unloading) 二、连接阶段 1.验证 2.准备 3.解析 总结 JVM作为Java程序的运行环境,其负责解释和执行字

    2024年02月02日
    浏览(39)
  • Vue生命周期--四大阶段--8个钩子之mounted钩子的渲染

    Vue生命周期 :一个Vue实例从创建到销毁的整个过程。 生命周期四个阶段 :创建(响应式数据)-挂载(渲染模板)-更新(修改数据,更新视图)-销毁(销毁实例) eg: 案例——记事本! 1.成果展示 2.需求:商品的添加与删除;价格超过500标红;统计计算总消费;消费账单使用饼图展示

    2024年01月19日
    浏览(60)
  • 微信小程序——生命周期,生命周期的分类,页面生命周期,生命周期函数的分类,应用的生命周期函数,页面的生命周期函数,wxs脚本概述

    生命周期( Life Cycle )是指一个对象从创建-运行-销毁的整个阶段,强调的是一个时间段。 例如: .张三出生,表示这个人生命周期的开始 .张三离世,表示这个人生命周期的结束 .中间张三的一生,就是张三的生命周期 我们可以把每个小程序运行的过程,也概括为生命周

    2024年02月01日
    浏览(63)
  • 【Vue2.0源码学习】生命周期篇-初始化阶段(initInjections)

    本篇文章介绍生命周期初始化阶段所调用的第四个初始化函数—— initInjections 。从函数名字上来看,该函数是用来初始化实例中的 inject 选项的。说到 inject 选项,那必然离不开 provide 选项,这两个选项都是成对出现的,它们的作用是:允许一个祖先组件向其所有子孙后代注

    2024年02月09日
    浏览(51)
  • 【Vue2.0源码学习】生命周期篇-初始化阶段(initState)

    本篇文章介绍生命周期初始化阶段所调用的第五个初始化函数—— initState 。 从函数名字上来看,这个函数是用来初始化实例状态的,那么什么是实例的状态呢?在前面文章中我们略有提及,在我们日常开发中,在 Vue 组件中会写一些如 props 、 data 、 methods 、 computed 、 watc

    2024年02月09日
    浏览(54)
  • 【React】: React的生命周期

    生命周期的每个阶段总是伴随着一些方法的调用,这些方法就是生命周期的钩子函数 钩子函数的作用:为开发人员在不同操作阶段提供了十几 只有 类组件 才有生命周期   生命周期的图片:  同时有:  编写以下代码,从而验证constructor,render,componentDidMount的顺序: 在开发者

    2024年02月08日
    浏览(43)
  • 【React学习】React组件生命周期

    在 React 中,组件的生命周期是指组件从被创建到被销毁的整个过程。React框架提供了一系列生命周期方法,在不同的生命周期方法中,开发人员可以执行不同的操作,例如初始化状态、数据加载、渲染、更新等。一个组件的生命周期大致可以分为三个阶段,即组件挂载时,更

    2024年02月12日
    浏览(41)
  • 【react】react生命周期钩子函数:

    一、生命周期概念: 生命周期:简单来说就是一个事物从出生到消亡的过程就是生命周期,在React中的生命周期,就是组件从创建、挂载到页面再到卸载组件的过程。 意义:生命周期有助于理解组件运行方式、完成复杂组件功能、分析组件中间问题产生的原因等。 生命周期钩子函数

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包