7. react 中的条件渲染
1. if 条件渲染
function UserGreeting (props) { return <h2>用户登录</h2> } function GuestGretting (props) { return <h2>游客登录</h2> } function Greeting (props) { const isLogin = props.isLogin if (isLogin) { return <UserGreeting /> } return <GuestGretting /> } ReactDOM.render( <Greeting isLogin={true} />, document.getElementById('root') )
2. 事件控制 if 条件渲染
function UserGreeting (props) { return <h2>用户登录</h2> } function GuestGretting (props) { return <h2>游客登录</h2> } function Greeting (props) { const isLogin = props.isLogin if (isLogin) { return <UserGreeting /> } return <GuestGretting /> } class LoginControl extends React.Component { constructor (props) { super(props) this.state = { isLogin: false } } handleLoginIn () { this.setState({ isLogin: true }) } handleLoginOut () { this.setState({ isLogin: false }) } loginBtn () { if (this.state.isLogin) { return <button onClick={this.handleLoginOut.bind(this)}>退出</button> } return <button onClick={this.handleLoginIn.bind(this)}>登录</button> } render () { const isLogin = this.state.isLogin return ( <div> {this.loginBtn()} <Greeting isLogin={isLogin} /> </div> ) } } ReactDOM.render( <LoginControl />, document.getElementById('root') )
3. 与运算符 && 渲染
1. 可以在 JSX 中嵌套任何表达式
2. true && expression
总是会返回 expression
, 而 false && expression
总是会返回 false
function UserGreeting (props) { return <h2>用户登录</h2> } function GuestGretting (props) { return <h2>游客登录</h2> } class LoginControl extends React.Component { constructor (props) { super(props) this.state = { isLogin: false } this.handleLoginIn = this.handleLoginIn.bind(this) this.handleLoginOut = this.handleLoginOut.bind(this) } handleLoginIn() { this.setState({ isLogin: true }) } handleLoginOut () { this.setState({ isLogin: false }) } render () { const isLogin = this.state.isLogin var btn = <button onClick={this.handleLoginIn}>登录</button>; if (isLogin) { btn = <button onClick={this.handleLoginOut}>退出</button> } return ( <div> {btn} { isLogin && <UserGreeting />} // 与运算条件渲染 </div> ) } } ReactDOM.render( <LoginControl />, document.getElementById('root') )
4. 三目运算渲染 condition ? true : false
上述实例改造为三目运算渲染
render () { const isLogin = this.state.isLogin var btn = <button onClick={this.handleLoginIn}>登录</button>; if (isLogin) { btn = <button onClick={this.handleLoginOut}>退出</button> } return ( <div> {btn} { isLogin ? <UserGreeting /> : <GuestGretting />} // 三目运算 </div> ) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)