React生命周期
来源:互联网 发布:js获取复选框的值 编辑:程序博客网 时间:2024/06/05 05:53
getDefaultpropse
设置props的默认数据
getInitialState
初始化每个实例的state,在这个方法里可以访问组件的props,每一个React组件都有自己的state与其props的区别在于state只存在组件的内部,props在所有实例中共享
初始化组件 state 数据,但是在 es6 的语法中,我们可以使用以下书写方式代替
constructor(props, context) { super(props, context); // 初始化组件 state 数据 this.state = { name:zhangsan } }}
getInitialState 和 getDefaultPops 的调用是有区别的, getDefaultPops 是对于组件类来说只调用一次,后续该类的应用都不会被调用,而 getInitialState 是对于每个组件实例来讲都会调用,并且只调一次。
componentWillMount
当组件即将渲染的时候触发这个函数,也就是render方法调用之前修改state的最后一次机会,修改state用this.setState({ })的方法
componentDidMount
组件渲染完成后触发这个函数,该方法被调用时,已经渲染出了真实的DOM,可以再该方法中通过 this.getDOMNode() 访问到真实的 DOM(推荐使用 ReactDOM.findDOMNode())。
组件第一次加载时渲染完成的事件,一般在此获取网络数据。实际开始项目开发时,会经常用到。
组件获取真实的DOM节点,要用到 ref 属性:
var ClickComponent = React.createClass({ handleClick:function(){ //获取节点 var tipE = this.refs.tip if(tipE.style.display=='block'){ tipE.style.display = "none"; }else{ tipE.style.display = "block"; } }, render:function(){ return( <div> <button onClick = {this.handleClick}>出现|隐藏</button> <p ref="tip" style={{'display':'block'}}>这是一个p标签</p> </div> ) } })
需要注意的是,由于 this.refs.[refName] 属性获取的是真实 DOM ,所以必须等到虚拟 DOM 插入文档以后,才能使用这个属性,否则会报错。
componentWillUpdate
当组件发生改变的时候触发这个函数(在组件接收到新的props或者state但还没有render的时候被调用,初始化时不会调用)
componentDidUpdate
当组件完成更新后立即调用,初始化时不会被调用
组件更新了之后触发的事件,一般用于清空并更新数据。实际开始项目开发时,会经常用到
componentWillUnmount
组件在DOM中被移除的时候立刻调用
组件在销毁之前触发的事件,一般用户存储一些特殊信息,以及清理setTimeout事件等
componentWillReceiveProps
组件接收到新的props时调用,并将其作为参数nextProps使用,此时可以更改组件props及state。(props改变之前)
componentWillReceiveProps: function(nextProps){ if(nextProps.checked !== undefined){ this.setState({ checked: nextProps.checked }) }}
shouldComponentUpdate
如果你确定组件的 props 或者 state 的改变不需要重新渲染,可以通过在这个方法里通过返回 false 来阻止组件的重新渲染,返回 `false 则不会执行 render 以及后面的 componentWillUpdate,componentDidUpdate 方法。
shouldComponentUpdate: function(nextProps, nextState){ return this.state.checked === nextState.checked; //return false 则不更新组件}
阅读全文
0 0
- React生命周期
- React 生命周期
- React生命周期
- React生命周期
- react生命周期
- react生命周期
- react 生命周期
- react生命周期
- React生命周期
- react生命周期
- React 生命周期
- react 生命周期
- react 生命周期
- React生命周期
- React生命周期
- react生命周期
- react 生命周期
- React生命周期
- Android Wi-Fi源码分析之WifiService操作Wi-Fi(一):分析Wifi.c中的wifi_load_driver()函数
- CSS3中不熟悉的属性2:display:box和display:flex的区别
- Linux下常用服务的端口号整理
- 关于线程池的理解
- CC2540、nRF51822应用开发比较
- React生命周期
- 二叉树
- 配置文件报错:不允许有匹配 "[xX][mM][lL]" 的处理指令目标。
- [YTU]_2626( B 统计程序设计基础课程学生的平均成绩)
- 关于welcome-file-list(欢迎页)不起作用的解决办法
- windows下实现python双版本(双pip解决方案)
- 初夏夜雨
- JAVA设置代理的两种方式(HTTPS和HTTP)
- Java 基础再回顾