react 18 生命周期

生命周期 生命周期(组件从诞生到销毁的全过程)本质上就是组件中的函数钩子。 主要有三个hooks:挂载,更新,卸载。

  • 首次挂载
    • 初始化constructor:同一个类组件对象只执行一次;不可以在此时setState,因为页面还没有挂载真实组件,除了异步情况下(例如setInteral中使用setState)。
    • 获取最新的属性和状态:static getDerivedStateFromProps。取代了之前的componentWillMount 和 componentWilllREceiveProps。 这是一个静态方法,所以拿不到this,因此也不可以调用setState。 该方法在挂载和更新阶段都会运行,有两个参数代表最新的状态和属性值。 返回值如果是object,则会合并掉当前的状态值。(不常用)
    • 创建vDom render:生成虚拟节点dom树 重新渲染都会调用render;同样也禁止使用setState,会造成无限递归导致爆栈。
    • componenntDidMount:挂载到页面渲染成真实dom 该方法只会在首次渲染时执行。执行完该钩子之后,组件正式进入到活跃状态。 一般做一些异步操作:开启定时器,发起网络请求,获取真实dom等。 在这里可以大胆使用setSate,因为真实dom已经渲染完毕。
  • 更新阶段
    • getDerivedStateFromProps,获取最新的属性和状态。
    • shouldComponentUpdate:是否重新渲染 该方法有两个参数:nextState,nextProps,表示更新后的属性和状态,决定是否重新渲染。 react提供了一个基础班的优化组件PureComponent,是一个hoc高阶组件,内部已经使用scu做了浅比较,一次如果组件继承了PureComponent,就不用scu进行判断了。
    • render:渲染vDom
    • getSnapShotBeforeUpdate:该函数在render之后,真实dom已经构建完成,但还没有渲染到页面中。 相当于更新前的快照,可以做一些附加的dom操作,比如对某个元素的真实class做一些事情。 参数:prevState,prevProps,返回snapShot,作为componentDidUpdate的第三个参数
    • comPonentDidUpdate:更新后挂载生成真实dom 通常也会用该方法操作真实dom 参数:prevProps, prevState, snapshot
  • 卸载阶段:
    • componentWillUnMount 卸载阶段唯一方法:做一些clear工作
  • 关于render
    • render():返回一个JSX表达式,生成的是一个虚拟dom,而不是直接操作的dom,展示了在内存中的ui结构。
      • 虚拟dom是react的一种优化机制。不论是类组件还是函数组件,在react中使用JSX语法时,就会形成虚拟dom。
      • 状态更新:类组件 this.state., setState({});  函数组件:const [state, setState] = useState(true);
        useEffect(()=>{//执行组件挂载,更新,卸载时的副作用},[//依赖数组,更新变化时执行副作用函数])
    • RactDom.render():真实的dom渲染。dom的更新是将渲染的虚拟dom与原来的版本比较(差异比较diffing机制),找出需要更新的部分,ReactDom.render()只更新这一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值