react组件三种基本生命周期:挂载、卸载、更新的时机及什么时候渲染

组件挂载

触发时机:React 组件构建,将 DOM 元素插入页面。

hooks行为:1. 组件根据val的值执行useState(val)的初始化;2. 执行一次useEffect的内容

触发渲染的三种情形之1

组件更新

1. 调用setState方法

触发时机:组件本身调用setState方法

hooks行为:1. 更新state状态;2. 根据useEffect的依赖项决定是否执行一次useEffect

另外,如果 class 组件 this.setState(null),传入null不会触发组件更新

触发渲染的三种情形之2

2. 父组件重新渲染

触发时机:父组件重新渲染

只要父组件重新渲染了,即使传入子组件的 props 未发生变化,那么子组件也会重新渲染,进而触发 render是触发渲染的三种情形之3

Demo:当点击按钮的时候,Child 组件的 props 并没有发生变化,但是也触发了 render 方法: 

const Child = () => {
  console.log("child render");
  return<div>child</div>;
};

class App extends React.Component {
  state = {
    a: 1
  };

  render() {
    console.log("render");
    return (
      <React.Fragement>
        <p>{this.state.a}</p>
        <button
          onClick={() => {
            this.setState({ a: 1 });
          }}
        >
          Click me
        </button>
        <button onClick={() => this.setState(null)}>setState null</button>
        <Child />
      </React.Fragement>
    );
  }
}

组件卸载

触发时机:当组件从 DOM 中移除时。

hooks行为:卸载事件会触发 class 组件的 componentWillUnmount() 方法,或函数组件的 useEffect Hook 的返回方法。

​​​

参考内容:

原文:性能!!让你的 React 组件跑得再快一点,作者:天泽,来源:政采云前端团队

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值