React-Native从入门到放弃

RN的生命周期

2017-12-21  本文已影响35人  一朝瑾秋色

1. 创建阶段

该阶段发生在createClass之后。

getDefaultProps处理props的默认值,在React.createClass时调用。和父组件的props合并作为该组件的属性。该组件无法修改自己的props,只能通过父组件来修改。

2. 实例化阶段

该阶段发生在对组建实例化阶段。

getInitialState : 定义初始化状态,用于初始化State。返回值会赋值给this.state属性。

componentWillMount  : 组件将被挂载。常见初始化都在这个方法中。业务逻辑大多放在这里。

render  : 渲染函数,渲染并返回一个虚拟的DOM。组建界面的代码都会作为返回值返回并渲染。

componentDidMount  : 函数发生在render方法之后,在该方法中,ReactJS会使用render方法返回的虚拟DOM来创建真实的DOM结构。组件内部通过this.getDOMNode()方法来获取当前组件节点。这样就可以操作节点属性。

3. 更新阶段

该阶段发生在用户操作或者父级组件有更新之后。

componentWillReceiveProps : 当props发生变化时执行,初始化render时不执行,在这个回调函数里面,你可以根据属性的变化,通过调用this.setState()来更新你的组件状态,旧的属性还是可以通过this.props来获取,这里调用更新状态是安全的,并不会触发额外的render调用 。

shouldComponentUpate  :  组建是否需要更新。用来拦截新的props或state,根据逻辑判断是否需要更新,返回true需要更新,反之不更新, 这个方法在初始化render时不会执行,当props或者state发生变化时执行,并且是在render之前,当新的props或者state不需要更新组件时,返回false 。

shouldComponentUpdate: function(nextProps, nextState) {return nextProps.id !== this.props.id; }

componentWillUpate  :  组件将被更新。做一些更新前的操作,然后使用render进行渲染更新视图。当props和state发生变化时执行,并且在render方法之前执行,当然初始化render时不执行该方法,需要特别注意的是,在这个函数里面,你就不能使用this.setState来修改状态。这个函数调用之后,就会把nextProps和nextState分别设置到this.props和this.state中。紧接着这个函数,就会调用render()来更新界面了

componentDidUpdate  :  组件完成更新,发生在render更新渲染之后。常用来做一些DOM操作。组件更新结束之后执行,在初始化render时不执行

4.销毁阶段

该阶段发生在组建被销毁之前。通常用来做一些取消事件绑定、移除虚拟DOM中对应的组件数据结构、销毁一些无效的定时器等工作。

componentWillUnmount容器将被销毁。

上一篇 下一篇

猜你喜欢

热点阅读