深入探讨 React 组件生命周期(旧版)

本文详细介绍了React旧版组件的生命周期及其各个阶段(如构造函数、挂载、更新等),通过实例演示如何在这些阶段执行自定义逻辑,并提到了一些已不推荐使用的函数。
摘要由CSDN通过智能技术生成

深入探讨 React 组件生命周期(旧版)

React 组件生命周期是理解和优化 React 应用的关键之一。在旧版 React 中,组件的生命周期包含一系列阶段,每个阶段都提供了钩子函数,允许我们在特定时刻执行自定义逻辑。通过观察一个简单的计数器组件的生命周期,我们可以更好地理解每个生命周期阶段的作用。

构造函数 - constructor

在组件被创建时调用,用于初始化状态(state)。

组件将要挂载 - componentWillMount

在组件即将被插入到页面之前调用。不推荐在此阶段进行网络请求。

组件已经挂载 - componentDidMount

在组件被插入到页面后调用。适合执行一次性操作,订阅外部事件或发起网络请求。

组件是否应该更新 - shouldComponentUpdate

在组件接收到新的 propsstate 时调用,用于决定是否重新渲染组件,需要返回true或false。

组件将要更新 - componentWillUpdate

在组件开始重新渲染之前调用。适合执行一些在更新前必须完成的准备工作。

组件已经更新 - componentDidUpdate

在组件重新渲染并将更改同步到 DOM 后调用。适合执行与 DOM 相关的操作。

组件将要卸载 - componentWillUnmount

在组件即将从页面中移除时调用。适合执行一些清理工作,如取消订阅或清除定时器。

组件将要接收新属性 - componentWillReceiveProps

在组件即将接收新的属性时调用,该方法已被标记为不推荐使用。

强制更新组件 - forceUpdate

在某些情况下,你可能想要强制组件重新渲染,即使 shouldComponentUpdate 返回 falseforceUpdate 可以实现这个目的。

举个例子

class Count extends React.Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  componentWillMount() {
    console.log('Count---componentWillMount');
  }

  componentDidMount() {
    console.log('Count---componentDidMount');
  }

  componentWillUnmount() {
    console.log('Count---componentWillUnmount');
  }

  componentWillReceiveProps(newProps) {
    console.log('Count---componentWillReceiveProps')
  }

  shouldComponentUpdate() {
    console.log('Count---shouldComponentUpdate');
    return true;
  }

  componentWillUpdate() {
    console.log('Count---componentWillUpdate');
  }

  componentDidUpdate() {
    console.log('Count---componentDidUpdate');
  }

  add = () => {
    const { count } = this.state;
    this.setState({ count: count + 1 });
  }

  unmount = () => {
    ReactDOM.unmountComponentAtNode(document.getElementById('root'));
  }

  force = () => {
    this.forceUpdate();
  }

  render() {
    console.log('Count---render');
    const { count } = this.state;

    return (
      <div>
        当前值:{count} <br />
        <button onClick={this.add}>点击加1</button> <br />
        <button onClick={this.unmount}>卸载组件</button> <br />
        <button onClick={this.force}>不更新state,强制更新</button>
      </div>
    );
  }
}

通过深入了解 React 组件的生命周期,我们能够更好地掌握组件的行为,有效利用生命周期函数来处理不同阶段的逻辑。请注意,由于 React 不断发展,一些生命周期函数已经被标记为不推荐使用,还是有学习的意义。

参考

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值