既然学习react,那就从hello word开始。固然必不可少的须要引入react,这里我使用的是官网的 Creating a New Application 方式,经过如下命令行操做便可在项目中使用react了,固然官网还提供了其余引入方式。html
npm install -g create-react-app create-react-app test-react cd test-react npm start
项目工程目录以下:react
在我理解看来,react项目文件入口便是index.js
文件,那么从index.js
中编写Hello Word。git
输出结果:github
从下面的代码中,去弄弄清楚react
的组件生命周期。npm
class Clock extends React.Component { constructor(props) { super(props); this.state = {date: new Date()}; } componentDidMount() { this.timerID = setInterval( () => this.tick(), 1000 ); } componentWillUnmount() { clearInterval(this.timerID); } tick() { this.setState({ date: new Date() }); } render() { return ( <div> <h1>Hello, world!</h1> <h2>It is {this.state.date.toLocaleTimeString()}.</h2> </div> ); } } ReactDOM.render( <Clock />, document.getElementById('root') );
1) When <Clock />
is passed to ReactDOM.render()
, React calls the constructor of the Clock
component. Since Clock needs to display the current time, it initializes this.state
with an object including the current time. We will later update this state.segmentfault
2) React then calls the Clock
component's render()
method. This is how React learns what should be displayed on the screen. React then updates the DOM to match the Clock's
render output.app
3) When the Clock
output is inserted in the DOM, React calls the componentDidMount()
lifecycle hook. Inside it, the Clock component asks the browser to set up a timer to call tick()
once a second.ide
4) Every second the browser calls the tick()
method. Inside it, the Clock
component schedules a UI update by calling setState()
with an object containing the current time. Thanks to the setState()
call, React knows the state has changed, and calls render()
method again to learn what should be on the screen. This time, this.state.date
in the render()
method will be different, and so the render output will include the updated time. React updates the DOM accordingly.函数
5) If the Clock
component is ever removed from the DOM, React calls the componentWillUnmount()
lifecycle hook so the timer is stopped.学习
react
组件生命周期大体有下面几个状态:
Mounting
:已插入真实 DOMUpdating
:正在被从新渲染Unmounting
:已移出真实 DOM
React 为每一个状态都提供了两种处理函数,will 函数在进入状态以前调用,did 函数在进入状态以后调用,三种状态共计五种处理函数。
componentWillMount()
componentDidMount()
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object nextProps, object nextState)
componentWillUnmount()
官方文档所述图片:
注:文章末尾段react
组件生命周期引入自https://segmentfault.com/a/11...