React生命周期函数

博客指出,当页面存在父子组件时,使用componentDidMount需特别注意。因为子组件的componentDidMount会先于父组件调用,这可能会引发父子组件传参错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

import React, { Component, Fragment } from 'react';
import TodoItem  from './TodoItem'
import './style.css'

class TodoList extends Component {

// constructor():构造函数
// 执行:组件加载钱最先调用一次,仅调用一次。
// 作用:定义状态机变量。
// 注意:第一个语句必须为super(), 否则会报错:'this' is not allowed before super()
constructor(props) {  
    super(props);  
    this.state = {  
      content:null,  
    }  
}     
 
// 执行:组件初始渲染(render()被调用前)前调用,仅调用一次。
// 作用:如果这个函数调用的setState改变了组件的某些状态,react会等待setState完成后再渲染组件。
// 注意:子组件也有componentWillMount函数,在父组件的该函数调用后再调用。
 componentWillMount(){}

// 执行:componentWillMount调用之后, componentDidMount调用之前。
// 作用:渲染挂载组件。
// 触发:1、初始化加载页面,2、状态机改变setState,3、接收新的props(父组件更新)
// 注意:组件必要函数,不能在函数内使用setState改变状态机。
 render(){}

// 时间:render之后被调用,仅调用一次。
// 作用:渲染挂载组件,可以使用refs(react支持的一个特殊属性,可以将它加在render函数返回的组件元素上,起一个标记作用,方便定位。)
// 注意:子组件也有该函数,在父组件调用前调用;如果该函数内有setState改变状态机,将会重新渲染组件,如果需要在页面初始化之后才改变状态机的,可以将网络请求放在该函数内。
componentDidMount(){ }

// 时间:组件渲染后,当组件接收新的nextProps时被调用。函数接收一个新的nextProps对象,nextProps是父组件传给子组件的。父组件render之后就会被调用。
// 作用:渲染挂载组件,可以使用refs(react支持的一个特殊属性,可以将它加在render函数返回的组件元素上,起一个标记作用,方便定位。)
// 注意:react初次渲染时不会被调用。
componentWillReceiveProps(nextProps){}

// 时间:组件执行render函数之后,接收新的props或state时被调用,即每次执行setState都会执行该函数,来判断是否重新渲染组件,默认返回true,接收两个参数。
// 作用:如果有些变化不需要执行渲染组件,可在该函数内阻止。
// 注意:不能在该函数内使用setState来改变状态机,如需要,请在componentWillReciveProps中改变。
shouldComponentUpdata(nextProps, nextState){}

// 时间:组件重新渲染后调用,在初始化渲染的时候该方法不会被调用。
// 作用:使用该方法可以在组件更新之后操作DOM元素。
componentDidUpdata(){}

// 时间:组件卸载之前调用。
// 作用:在该方法中执行必要的清理,比如无效的定时器后者在componentDidMount中创建的DOM元素。
componentWillUnmount(){}

}

export default TodoList;

注意

当一个页面中存在父子组件的时候,要特别注意componentDidMount的使用,因为子组件的componentDidMount会比父组件先调用,从而会引起父子组件传参错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值