react的生命周期三个执行阶段
1,挂载阶段 1.constructor() 主要是完成React数据的初始化 2.componentWillMount() 组件初始化已完成,模板数据渲染之前执行, 客户端和服务端都会执行,主要是用于服务端渲染 render() 3.compoentDidMount() 第一次渲染后在客户端执行,此时可以操作Dom 2,更新阶段 1.componentWillReceiveProps(nextProps) 当从父类接收到props时,重新渲染组件执行的逻辑。 2.shouldComponentUpdate(nextProps,nextSate) 根据特定的条件返回true或者false,如果希望更新组件则返回true,否则返回false。默认的情况是 false 3.componentWillUpdate(nextProps,nextSate) shouldComponentUpdate返回true以后,组件进入重新渲染的流程时执行的逻辑。在Dom中进行渲染之前调用 render() 页面渲染逻辑的执行,render函数把jsx编译为函数并生成虚拟Dom,然后通过diff算法比较更新前后的新旧Dom树,并渲染更改后的节点 4.componentDidUpdate(nextProps,nextState) 渲染后立即调用 3, 卸载过程 componentWillUnMount() 在这个生命周期里面主要是处理 一些内存泄漏的问题 比如:定时器的清除,移除所有组件中的监听器
vue的生命周期执行顺序过程
1,beforeCreate() 创建前 进行数据的初始化前,在此阶段 定义对象属性 方法 及事件 组件选项的对象还未创建,el和data还未初始化,因此无法访问methods,data,computed等的方法和数据 2,Create() 创建后 实例创建后调用, 可以改变data的数据,调用methods方法,获取computed的属性等。但是el没有挂载阶段还没有开始。 3,beforeMount( )挂载前 相关的render函数首次调用,生成虚拟Dom,进行保存在通过render函数生成真实Dom,真实Dom会替换原来的Vm.
e
l
。
替
换
后
的
el。替换后的
el。替换后的el append到我们的页面。编译模板,把data数据和模板生成html,完成el和data的初始化。此时还没挂载到html页面, 4,Mount() 挂载后 模板中的html渲染到html页面,可以进行ajax操作,操作dom,mounted只会执行一次。 5,beforeUpdate() 更新前 数据更新前调用,虚拟Dom重新渲染和打补丁之前,可以在该钩子函数进一步更改状态,不会触发附件的渲染过程 6.update() 更新后 由于数据更改导致虚拟Dom重新渲染和打补丁只会调用,调用时,组件DOM已更新。所以不可进行依赖于Dom操作,应避免在此期间更改状态,会导致死循环,该钩子在服务端渲染期间不会被调用 7.beforeDestroy() 组件销毁前 实例还可以调用,主要用于清除定时器和事件的监听 8.destroy() 组件销毁后 实例销毁后调用,所有实践监听器被移除,子实例被销毁,该钩子在服务端渲染期间不会被调用
|