Component 生命周期:constructor构造函数
componentWillMount渲染前
render渲染(如果此过程调用了其它组件,就会去执行其它组件的生命周期,之后
再返回到该组件的生命周期)
componentDidMount渲染后
组件更新周期: shouldComponentUpdate(nextProps,nextState)
render
componentWillUpdate(nextProps,nextState)
componentDidUpdate(preProps,preState)
import
React, {
Component }
from
'react';
import
'./App.css';
import
Person
from
'./person/person.js';
import
Company
from
'./company/company.js';
import
List
from
'./list/list.js';
class
App
extends
Component {
constructor(
props){
super(
props);
this.
state = {
show:
true,
companys: [{
id:
1,
companyname:
"北京LIKE技术有限公司",
companylocation:
"北京朝阳区朝阳大道1029号",
companydes:
"一家科技公司哦"
}, {
id:
2,
companyname:
"北京LIKE技术有限公司",
companylocation:
"北京朝阳区朝阳大道10号",
companydes:
"一家科技公司哦"
}, {
id:
3,
companyname:
"北京LIKE技术有限公司",
companylocation:
"北京朝阳区朝阳大道007号",
companydes:
"一家科技公司哦"
}],
persons: [
{
id:
1,
name:
"lily",
num:
22,
msg:
"you are bitch"
},
{
id:
2,
name:
"lucy",
num:
20
},
{
id:
3,
name:
"jack",
num:
21
}
]
}
console.
log(
"constructor" );
}
componentWillMount(){
console.
log(
'componentwillmount');
}
change = (
e,
id)
=> {
const
index =
this.
state.
persons.
findIndex(
p
=> {
return
p.
id ===
id;
});
const
persons = { ...
this.
state.
persons };
persons[
index].
name =
e.
target.
value;
this.
setState(
persons);
}
//显示隐藏列表
changeHide = ()
=> {
this.
setState({
show: !
this.
state.
show
});
}
//点击事件
itemClick = (
id)
=> {
console.
log(
"itemClick" +
id);
}
//删除事件
deleteItem = (
id)
=> {
const
persons =
this.
state.
persons;
persons.
splice(
id,
1);
this.
setState({
persons:
persons
});
}
render() {
console.
log(
' render');
let
persons =
null;
let
companys =
null;
if (
this.
state.
show) {
persons = (
<
List
>
{
this.
state.
persons.
map((
person,
index)
=> {
let
son = (
<
Person
key=
{
person.
id
}
name=
{
person.
name
}
num=
{
person.
num
}
itemClick=
{this.
itemClick
}
deleteItem=
{()
=>
this.
deleteItem(
index)
}
inputChange=
{(
e)
=> {
this.
change(
e,
person.
id) }
}
/>);
if(
person.
msg){
son = (
<
Person
key=
{
person.
id
}
name=
{
person.
name
}
num=
{
person.
num
}
itemClick=
{this.
itemClick
}
deleteItem=
{()
=>
this.
deleteItem(
index)
}
inputChange=
{(
e)
=> {
this.
change(
e,
person.
id) }
}
>you are bitch
</
Person
>);
}
return
son;
})
}
</
List
>
);
companys = (
<
List
>
{
this.
state.
companys.
map((
company,
index)
=> {
return
<
Company
companyname=
{
company.
companyname
}
companylocation=
{
company.
companylocation
}
companydes=
{
company.
companydes
}
key=
{
company.
id
}
/>;
})
}
</
List
>
);
}
const
classes = [];
if (
this.
state.
persons.
length >
3) {
classes.
push(
"red");
}
else {
classes.
push(
"bold");
}
return (
<
div
className=
"myfirstcss"
>
<
div
>
{this.
props.
title
}
</
div
>
<
div
className=
{
classes.
join(
" ")
}
>修改class
</
div
>
<
button
onClick=
{()
=>this.
changeHide(
null)
}
>显示隐藏
</
button
>
<
span
>
you think you are perfect,
<
br
/>no,you are wrong,you are bitch.
</
span
>
<
br
/>
{
persons
}
{
companys
}
</
div
>
);
}
componentDidMount(){
console.
log(
'componentDidMount');
}
}
export
default
App;
无状态组件
import
React
from
'react';
import
'./person.css';
function
getWorld(
props) {
const
style1 = {
background:
"#897766",
border:
"1px solid black"
};
return (
<
li
onClick=
{()
=>
props.
itemClick(
props.
num)
}
>
{
props.
name
} first module and my company has
{
props.
num
} person
{
props.
children ?
<
div
>
your friend has a word to you "
{
props.
children
}"
</
div
> :
null
}
<
input
style=
{
style1
}
className=
"inputdiv"
onChange=
{
props.
inputChange
}
></
input
>
<
div
onClick=
{
props.
deleteItem
}
>删除
</
div
>
</
li
>
);
}
export
default
getWorld;