React生命周期总结

react生命周期流程

1.初始化,首次render

  • getDefaultProps()

    getDefaultProps 方法可以用来设置组件属性的默认值,在组件被建立时候就立即调用,所有实例都可以共享这些属性。此时并不可以使用this.state和setState。
    注意es6语法中就不这样用了,在前面一篇文章中介绍过了区别。

  • getInitialState()

    getInitialState 方法用于定义初始状态,也不可以使用this.state和setState。

  • componentWillMount()

    componentWillMount只在初始化时候被调用一次,可以使用setState方法,会立即更新state,然后接着进行render。
  • render()

    注意在render中千万不可使用setState方法,不然马上会引起无限的报错了哈哈。如果其中包含其他的子组件,那么子组件的生命周期才开始进行。
  • componentDidmount()

    在子组件也都加载完毕后执行,在RN中就是指组件初始化加载完毕,在react中DOM渲染完成,此时就可以操作DOM了。

2.props发生改变时候更新

  • componentWillReceiveProps(nextProps)

    componentWillReceiveProps方法可以比较this.props和nextProps来看是否发生了变化,然后可以进行setState等操作。

    注意只要父组件此方法触发,那么子组件也会触发,也就是说父组件更新,子组件也会跟着更新。
  • shouldComponentUpdate(nextProps, nextState)

    shouldComponentUpdate 方法在接收了新的props或state后触发,你可以通过返回true或false来控制后面的生命周期流程是否触发。

  • componentWillUpdate(nextProps, nextState)

    componentWillUpdate在props或state改变或shouldComponentUpdate返回true后触发。不可在其中使用setState。
  • render()

    重新渲染。
  • componentDidupdate(prevProps, prevState)

    会等子组件也都更新完后才触发。

3.state发生改变时候更新

  • shouldComponentUpdate(nextProps, nextState)

    shouldComponentUpdate 方法在setState后state发生改变后触发,你可以通过返回true或false来控制后面的生命周期流程是否触发。

  • componentWillUpdate(nextProps, nextState)

    componentWillUpdate在state改变或shouldComponentUpdate返回true后触发。不可在其中使用setState。
  • render()

    重新渲染。
  • componentDidupdate(prevProps, prevState)

    会等子组件也都更新完后才触发。

3.组件销毁

  • componentWillUnmount()

    组件销毁时候触发。

使用redux时候情况

在使用redux做状态管理时候,基本不需要透过生命周期去做setState这样的状态管理了,基本都是用props来传递来重新渲染,需要注意的仅仅是在哪个生命周期时候触发action,比如需要进行ajax请求时候一般都是在componentDidMount和componentWillReceiveProps时候进行,在reducer中处理完,然后在通过props传入组件执行组件的更新周期。

参考资料

1.react生命周期

2.掘金

3.ajax请求

转载于:https://www.cnblogs.com/lijie33402/p/6384080.html

Vue和React是两个常用的前端框架,它们都有自己的生命周期函数用于管理组件的创建、更新和销毁过程。 Vue的生命周期函数包括初始化、创建、挂载、更新和销毁等几个阶段。具体来说,Vue的生命周期函数按照顺序包括: 1. beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前调用。 2. created:在实例创建完成后调用,此时实例已经完成了数据观测 (data observer),属性和方法的运算,watch/event 事件回调。但是还未开始DOM编译。 3. beforeMount:在挂载开始之前被调用,此时尚未生成真实的DOM节点。 4. mounted:在挂载完成后被调用,此时组件已经生成了对应的真实DOM节点,可以对DOM进行操作。 5. beforeUpdate:在数据更新之前被调用,可以在这个钩子进行更新前的操作。 6. updated:在数据更新完成后被调用,可以在这个钩子进行更新后的操作。 7. beforeDestroy:在实例销毁之前调用,可以在这个钩子进行一些清理工作。 8. destroyed:在实例销毁之后调用,此时实例中的所有指令及事件监听器都已经被移除。 React生命周期函数则有一些不同,主要包括: 1. constructor:在组件被创建时调用,用于初始化状态和绑定事件处理方法。 2. render:用于渲染组件的内容,返回一个React元素。 3. componentDidMount:在组件挂载到DOM后调用,可以进行一些需要DOM操作的初始化工作。 4. componentDidUpdate:在组件更新后被调用,可以进行一些需要DOM操作的更新工作。 5. componentWillUnmount:在组件即将从DOM中移除时调用,可以进行一些清理工作。 在新版本的React中,还引入了一些新的生命周期函数,比如getDerivedStateFromProps和getSnapshotBeforeUpdate,用于实现一些额外的功能。 总结一下,Vue和React生命周期函数在创建、更新和销毁的过程中有所不同,同时React还引入了一些新的生命周期函数。了解这些生命周期函数的执行顺序和用途可以帮助我们更好地管理和控制组件的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值