react生命周期

挂载阶段的生命周期函数:

挂载过程在组件渲染过程中只出现一次

1.counstructor:(在挂载时被调用一次,可以对this.state进行初始化)

2.componentWillMount(一般进行初始化操作,但是存在风险,react16已经·废弃了该方法)

3.render(不会操作真实DOM,会把需要渲染的内容返回回来)

注:render方法在16之前要求返回单个元素,在16之后可以返回元素数组和字符串

4.componentDidMount(在渲染结束后触发,此时真实DOM已经被挂载到页面上,可以进行操作相关真实DOM,可以进行异步请求)

5.componentWillReceiveProps(nextProps),其中nextProps表示接受到的新props,现有的props可以通过this.props拿到

很多人以为父子组件之间,只有props变化才会调用componentWillReceiveProps,其实只要父组件变化导致重新渲染就会触发该生命周期

6.ShouldComponentUpdate(nextProps, nextState),react性能优化中重要的一环,默认返回true,表示会重新渲染,

可以通过判断state和props的值,没更新时返回false,防止过渡渲染

getDerivedStateFromProps:使用props来更新派生state

是一个静态方法,方法内部不可以调用This

需要一个对象形式的返回值,并不是覆盖而是针对性的更新

这个方法的触发不是通过props的变化,而是通过父组件的更新

更新阶段的生命周期函数:

1.componentWillUpdate(nextProps, nextState),组件初始化时不调用,只有在组件将要更新时才调用,此时可以修改state

2.getSnapShotBeforeUpdate:他的返回值会作为第三个参数给到componentWillUpdate,他的执行时机是在render之后,真实DOM之前

3.ComponentDidUpdate:  组件初始化时不调用,组件更新完成后调用,此时可以获取dom节点。

卸载阶段的生命周期函数:

componentWillUnmount:组件在父组件中被移除了,一般定时器和事件监听可以在此时移除

为什么要废弃掉相关生命周期函数:

1.这些生命周期函数所做的事可以转到其他生命周期函数中去做

2.在Fiber架构异步渲染机制下可能会带来很多bug,在Fiber机制下,多次的打断+重启可能执行多次

更多情况是为了配合Fiber的异步改造机制

posted @ 2021-07-07 22:27  千亿昔  阅读(46)  评论(0编辑  收藏  举报