React之新生命周期的思考

React新生命周期图

https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

render()方法

render()

render()方法在类组件中必须被调用

它会检查props和state的变化并返回以下类型之一

  1. React元素

  1. 数组

  1. 字符串

  1. 布尔类型或者null

需要注意的是,我们应该保证render()里的内容是一个纯函数,这样在不进行修改state或者dom操作的情况下,render()每次操作都能返回同样的结果

Constructor()方法

Constructor(props)

这是一个构造函数方法,在React组件进行挂载之前会调用它的构造函数

但是我们需要在其他语句之前调用super(props)

此方法用来将调用当前类组件的父组件的属性传入类组件

constructor(props) {
  super(props);
  // 不要在这里调用 this.setState()
  this.state = { counter: 0 };
  this.handleClick = this.handleClick.bind(this);
}

在 constructor() 函数中不要调用 setState() 方法。如果你的组件需要使用内部 state,请直接在构造函数中为 this.state 赋值初始 state

同样的我们需要注意不要在构造函数中引入任何副作用

ComponentDidMount()方法

componentDidMount()

ComponentDidMount会在组件挂载后立即调用

依赖于DOM节点的初始化应该直接放在这里

例如网络请求数据,通过id或者classname获取dom节点,进行订阅或者取消订阅

ComponentDidUpdate()方法

componentDidUpdate(prevProps, prevState, snapshot)

该方法会在state或者props或者监听到事件后(也就是更新后)被调用

在组件更新后,可以在此进行dom操作

componentWillUnmount()方法

componentWillUnmount()

componentWillUnmount() 会在组件卸载及销毁之前直接调用。在此方法中执行必要的清理操作,例如,清除 timer,取消网络请求或清除在 componentDidMount() 中创建的订阅等。

componentWillUnmount() 中不应调用 setState(),因为该组件将永远不会重新渲染。组件实例卸载后,将永远不会再挂载它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值