条件渲染和列表循环
React没有指令,一切操作的本质都是通过计算生成不同的内容,拿去渲染,得到不同的页面。
条件渲染的本质
原则:
- react渲染undefined,null,false,空字符串不会渲染成任何内容。
- 如果渲染一个jsx编写的html元素,就会渲染成页面上的内容。
class App extends React.Component {
state = {
show: true
}
f1() {
if (this.state.show) {
return <div>Hello World</div>
} else {
return null
}
}
render() {
return <div className="App">
{this.f1()}
<button onClick={() => {
this.setState({
show: !this.state.show
}
)
}}>{this.state.show ? 'Hide' : 'Show'}</button>
</div>
}
}
列表循环的本质
原则
-
渲染一个数组会把数组里的每一项单独取出渲染
-
那么我们编写一个里面存放的都是html结构的数组,就会渲染成列表。
class App extends React.PureComponent {
state = {
originArr: [1, 2, 3, 4, 5]
}
addData = () => {
let _arr = [...this.state.originArr]
_arr.push(Math.random() * 10);
this.setState({
originArr: _arr
})
}
render() {
return <div className="App">
<div>列表渲染</div>
{this.state.originArr.map((item) => { return <div key={item}>{item}</div> })}
<button onClick={this.addData}>addData</button>
</div>
}
}