1 // import React from 'react';
2 // import ReactDOM from 'react-dom';
3 // import './index.css';
4 // import App from './App';
5 // import registerServiceWorker from './registerServiceWorker';
6
7 // ReactDOM.render(<App />, document.getElementById('root'));
8 // registerServiceWorker();
9
10
11
12
13
14 import React from 'react'
15 import ReactDOM from 'react-dom';
16 import registerServiceWorker from './registerServiceWorker';
17 class SubCounter extends React.Component {
18 componentWillReceiveProps() {
19 console.log('9、子组件将要接收到新属性');
20 }
21
22 shouldComponentUpdate(newProps, newState) {
23 console.log('10、子组件是否需要更新');
24 if (newProps.number < 5) return true;
25 return false
26 }
27
28 componentWillUpdate() {
29 console.log('11、子组件将要更新');
30 }
31
32 componentDidUpdate() {
33 console.log('13、子组件更新完成');
34 }
35
36 componentWillUnmount() {
37 console.log('14、子组件将卸载');
38 }
39
40 render() {
41 console.log('12、子组件挂载中');
42 return (
43 <p>{this.props.number}</p>
44 )
45 }
46 }
47
48 class Counter extends React.Component {
49 static defaultProps = {
50 //1、加载默认属性
51 name: 'sls',
52 age:23
53 };
54
55 constructor() {
56 super();
57 //2、加载默认状态
58 this.state = {number: 0}
59 }
60
61 componentWillMount() {
62 console.log('3、父组件挂载之前');
63 }
64
65 componentDidMount() {
66 console.log('5、父组件挂载完成');
67 }
68
69 shouldComponentUpdate(newProps, newState) {
70 console.log('6、父组件是否需要更新');
71 if (newState.number<15) return true;
72 return false
73 }
74
75 componentWillUpdate() {
76 console.log('7、父组件将要更新');
77 }
78
79 componentDidUpdate() {
80 console.log('8、父组件更新完成');
81 }
82
83 handleClick = () => {
84 this.setState({
85 number: this.state.number + 1
86 })
87 };
88
89 render() {
90 console.log('4、render(父组件挂载)');
91 return (
92 <div>
93 <p>{this.state.number}</p>
94 <button onClick={this.handleClick}>+</button>
95 {this.state.number<10?<SubCounter number={this.state.number}/>:null}
96 </div>
97 )
98 }
99 }
100 ReactDOM.render(<Counter/>, document.getElementById('root'))
101 registerServiceWorker();