本文主要介绍组件的生命周期。
组建的生命周期主要分为3个:Mounting、Updating、Unmounting.
1. Mounting:组件被加载到DOM
在本阶段,主要有三个方法:
1.1 getInitialState():object 设置初始状态
1.2 componentWillMount() Mounting发生前调用
1.3 componentDidMount() Mounting发生后调用。该方法主要用于请求DOM节点的初始化。
2.Updating:DOM更新,组件被重新渲染
在本阶段,主要有四个方法:
2.1 componentWillReceiveProps(object nextProps) 当Mounted组件接受新的props时调用。该方法主要用于比较this.props和nextProps以使用this.setState()执行状态转换。
2.2 shouldComponentUpdate(object nextProps,object nextState):boolean 当组件判断是否有保证DOM更新的改变时被调用。使用该方法作为比较this.props和nextProps、this.state和nextState的一种优化。如果React跳过更新,则返回false。
2.3 componentWillUpdate(object nextProps,object nextState) 更新前被调用。该方法内不能调用this.setState().
2.4 componentDidUpdate(object prevProps,object prevState) 更新完成后被调用。
3.Unmounting:组件被移除DOM
在本阶段,只有一个方法:
3.1 componentWillUnmount() 组件被移除和销毁前调用。此处应Cleanup。
4.实例
var Hello = React.createClass({
getInitialState: function () {
return {
opacity: 1.0
};
}, componentDidMount: function () {
this.timer = setInterval(function () {
var opacity = this.state.opacity;
opacity -= .;
if (opacity < 0.1) {
opacity = 1.0;
}
this.setState({
opacity: opacity
});
}.bind(this), );
}, render: function () {
return (
<div style={{opacity: this.state.opacity}}>
Hello {this.props.name}
</div>
);
}
}); ReactDOM.render(
<Hello name="world"/>,
document.getElementById('content')
);
软件实现的功能:在hello组件加载以后,通过 componentDidMount 方法设置一个定时器,每隔100毫秒,就重新设置组件的透明度,从而引发重新渲染。
注意:组件的style属性的设置方式也值得注意,不能写成style="opacity:{this.state.opacity};",而要写成style={{opacity: this.state.opacity}}。这是因为 React 组件样式是一个对象,所以第一重大括号表示这是 JavaScript 语法,第二重大括号表示样式对象。
浏览器效果:“Hello world”逐渐淡化消失(循环)
更多内容,请访问:http://www.cnblogs.com/BlueStarWei/