从零开始学React(10)——组件的生命周期
在React中,组件从创建,插入,渲染,移除真实组件整个过程中,我们可以根据组件所处的状态。触发特定的事件。 官方参考文档 组件的生命周期严格来说分为3个状态,
每种状态都有2个事件可以触发,will进入该状态之前调用,did进入状态之后调用。 然后,结合起来分为5种状态,移出真实DOM以后就不会触发状态类事件了。所以共有5种事件。
除此以外还有2个特殊的事件。
完整代码 <!DOCTYPE html> <html> <meta charset="UTF-8"> <head> <script src="../build/react.js"></script> <script src="../build/react-dom.js"></script> <script src="../build/browser.min.js"></script> </head> <body> <div id="diy"></div> <!--在JXS中,最好不要写注释容易报错--> <!--input标签的/一定要写,否则报错--> <script type="text/babel"> //setInterval()里面一定要使用bind,只用setInterval会报错。 //使用bind后,this代表的是本函数。不使用bind时,this代表window var MyColor = React.createClass({ getInitialState : function(){ return {opacity : 1.0} },componentDidMount : function (){ console.log("componentDidMount"+this); this.timer = setInterval(function(){ console.log("setInterval"+this); var opacity = this.state.opacity; opacity -= 0.05; if(opacity < 0.1){ opacity = 1.0; } this.setState({opacity : opacity}); }.bind(this),100) },render : function(){ return( <div style={{opacity : this.state.opacity}}> 你好,{this.props.name} </div> ) } }) ReactDOM.render(<MyColor name="这段话会循环的显示隐藏"/>,document.getElementById("diy")); </script> </body> </html> 在上面,setInterval()是定时执行函数。正常用法为setInterval(fn(),time).opacity属性是透明度属性。通过每秒透明度减小1/20,达到逐渐透明的目的。 bind和setInterval的区别 但是在这里不能这么用。bind()该函数改变了this的含义。 使用bind()时,浏览器打印的this为object object。 当不使用bind().只调用setInterval函数时,浏览器打印的this为object window; style注意点 style官方文档 另外,组件的 style="opacity:{this.state.opacity};" 而要写成 style={{opacity: this.state.opacity}} React中第一个大括号替换了""写法,第二层大括号是一个对象。所以,这里要使用双层大括号。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |