3、React运行阶段函数使用

componentWillReceiveProps: 父组件修改属性触发,可以修改新属性、修改状态,组件发生之前触发,在这个函数可以使用旧属性和新属性 做比较,传送到组件之前做相应的处理

shouldComponentUpdate: 返回false会阻止render调用,这个方法就是react询问开发者 组件是否需要更新,这个函数可以用来优化性能

componentWillUpdate: 这个方法不能修改属性和状态
render:只能访问this.props 和 this.state ,只有一个顶层组件,不允许修改状态和DOM输出

componentDidUpdate: 可以修改DOM

/* *  第一次加载页面后,看到只有调用render *  输入内容,就会看到其它函数都会按照顺序触发,原因就是父组件改变了子组件的属性,所以组件触发了5个运行中的函数 */
var count = 0var Hello = React.createClass({  
componentWillReceiveProps(){    
console.log('componentWillReceiveProps 1'); 
 },  
shouldComponentUpdate(){   
 console.log('shouldComponentUpdate 2');   
 return true  
}, 
 //这个函数一般用的不多,用一些日志打印,数据打印调试等  componentWillUpdate(){    
console.log('componentWillUpdate 3');  
},  
render(){    
console.log('render 4');    
return(      
<p>hello {this.props.name}</p>    
)  },  
componentDidUpdate(){    
console.log('componentDidUpdate 5');  
}
});

var Test = React.createClass({  
getInitialState(){    
return {      name: ''    }  
},  
handleChange(event){    
this.setState({      name: event.target.value    }) 
 }, 
 //渲染组件虚拟DOM  
render(){   
 return(      
  <div style={{textAlign:'center',fontSize:28}}>        
    <Hello name={this.state.name} />        
    <br/>        
    <input type="text" onChange={this.handleChange} style={{border:'1px solid #ccc'}}/>      
  </div>   
 )  
}
});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,879评论 1 18
  • 在React Native中使用组件来封装界面模块时,整个界面就是一个大的组件,开发过程就是不断优化和拆分界面组件...
    ITxiansheng阅读 961评论 1 2
  • 深入JSX date:20170412笔记原文其实JSX是React.createElement(componen...
    gaoer1938阅读 8,117评论 2 35
  • 那个她 那个她是一个来自小县城的姑娘,对物质要求很低,粗茶淡饭也就够了。 由于父母离异,那个她对于爱情非常敏感,把...
    Herman阅读 172评论 1 1
  • 今天,我感到了来自世界的深深的恶意。 上班,就要遵守规则,就要受管制,今天我深深地体会到了这一点。 下午,本来想请...
    梅洛的听雨轩阅读 564评论 6 0