条件渲染
核心:使用三元运算符合函数替代直接在
jsx
中写if..else语句
渲染文本
render(){
return (
<div>{isLogged?'退出':'登录'}</div>
)
}
渲染元素
render(){
return(
<div>
<header>页面头部</header>
<main>页面内容</main>
{
this.state.needFooter&&<footer>页脚</footer>
}
</div>
)
}
注意:0 && expression ,expression仍然会被渲染。
渲染组件
布尔值
render(){
const component = isLogged?<Complete1>:<Complete2>;
return(
<component>
)
}
render(){
return (
<div>
{
complete&&<List />
}
</div>
)
}
函数式一
showButton(){
const isLogged = this.state.isLogged;
if(isLogged){
return <LogoutButton />
}else{
return <LogInButton>
}
}
render(){
return(
<div>{this.showButton}</div>
)
}
函数式二
function Log(props){
const isLogged = props.isLogged;
if(isLogged){
return <Logged />
}else{
return <NoLogged />
}
}
条件渲染与display:none的区别
使用条件渲染时,组件的DOM并没有加载,只有确定要加载时,组件的DOM才真正的加载到文档中。 使用display:none的时候, 组件看似从网页中消失,实际上DOM节点仍然存在,没有移除。