4、React销毁阶段使用函数

componentWillUnmount: 在删除组件之前进行清理操作,比如删除计时器和事件监听器,因为这写都开发者加上去的,react并不知道,所以说需要手动清理

/* 
第一次加载页面后,看到只有调用render *  输入内容,就会看到其它函数都会按照顺序触发,原因就是父组件改变了子组件的属性,所以组件触发了5个运行中的函数
 */

var Hello = React.createClass({  
render(){    
console.log('render 4');    
return(      
  <p>hello {this.props.name}</p>   
 ) 
 },  
componentWillUnmount(){   
  console.log('B00000000');  
}});

var Test = React.createClass({  
getInitialState(){    
  return {      
    name: ''    
  } 
 },  
handleChange(event){    
if(event.target.value == '123'){      
 //使用react提供的函数删除Test的组件(括号里使用的是装载之后目标节点)          ReactDOM.unmountComponentAtNode(document.getElementById('app'));            return;    
}    
this.setState({ name: event.target.value }) 
 },  
//渲染组件虚拟DOM  
render(){    
//当状态修改成123的是,就会返回if语句里面的组件,react会把之前组件删除调用触发子组件的销毁函数    
//第二种方法是使用react提供的函数来删除    
// if(this.state.name === '123'){   
 //   return <div>123</div>    
// }   
 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>    
) 
 }

});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,995评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,443评论 4 61
  • 2017年2月25日 星期六 好不容易熬过了冬天,确不曾想差点冻死在春天,东莞的冷,不是因为温度,...
    王斌琪8年专注铁盒包装阅读 1,229评论 0 0
  • 社会需要规则,需要人们遵守规则;现代社会需要更多的规则,需要人们遵守更多的规则。这是社会运转的保障,也是人们自由...
    梦想农场主阅读 7,512评论 0 4
  • 看着窗外 灰蒙蒙的一片 就连建筑是灰灰的 风吹进来 微冷 摆动的头发 和内心一样糊成一团 图书馆很安静 听得...
    张寒山阅读 1,432评论 0 1

友情链接更多精彩内容