React学习笔记之条件渲染(一)

发布时间 - 2026-01-11 02:08:24    点击率:

前言

在React中,你可以创建不同的组件各自封装你需要的东西。之后你可以只渲染其中的一部分,这取决于应用的state(状态)。下面就来看看详细的介绍:

条件渲染

可以根据state的值进行组件的条件渲染。例如:

function Greeting(props) { 
 const isLoggedIn = props.isLoggedIn;
 if (isLoggedIn) {
 return <UserGreeting />;
 }
 return <GuestGreeting />;
}

ReactDOM.render( 
 // Try changing to isLoggedIn={true}:
 <Greeting isLoggedIn={false} />,
 document.getElementById('root')
);

你还可以用变量去存储组件,以便进行条件筛选,使得渲染函数的返回值更加清爽,例如:

class LoginControl extends React.Component { 
 constructor(props) {
 super(props);
 this.handleLoginClick = this.handleLoginClick.bind(this);
 this.handleLogoutClick = this.handleLogoutClick.bind(this);
 this.state = {isLoggedIn: false};
 }

 handleLoginClick() {
 this.setState({isLoggedIn: true});
 }

 handleLogoutClick() {
 this.setState({isLoggedIn: false});
 }

 render() {
 const isLoggedIn = this.state.isLoggedIn;

 let button = null;
 if (isLoggedIn) {
 button = <LogoutButton onClick={this.handleLogoutClick} />;
 } else {
 button = <LoginButton onClick={this.handleLoginClick} />;
 }

 return (
 <div>
 <Greeting isLoggedIn={isLoggedIn} />
 {button}
 </div>
 );
 }
}

ReactDOM.render( 
 <LoginControl />,
 document.getElementById('root')
);

还可以使用短操作符来实现条件筛选,可以用更短的代码写出渲染结果。例如&&来替代if,?:来替代if else, 例如:

function Mailbox(props) { 
 const unreadMessages = props.unreadMessages;
 return (
 <div>
 <h1>Hello!</h1>
 {unreadMessages.length > 0 &&
 <h2>
  You have {unreadMessages.length} unread messages.
 </h2>
 }
 </div>
 );
}

const messages = ['React', 'Re: React', 'Re:Re: React']; 
ReactDOM.render( 
 <Mailbox unreadMessages={messages} />,
 document.getElementById('root')
);
render() { 
 const isLoggedIn = this.state.isLoggedIn;
 return (
 <div>
 The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.
 </div>
 );
}

这种跟更大的表达式的写法也可以,但是不推荐,因为代码就不是很直观了。

render() { 
 const isLoggedIn = this.state.isLoggedIn;
 return (
 <div>
 {isLoggedIn ? (
 <LogoutButton onClick={this.handleLogoutClick} />
 ) : (
 <LoginButton onClick={this.handleLoginClick} />
 )}
 </div>
 );
}

如果组件有时候需要渲染出来,而有时候不需要渲染出来,在不需要渲染的时候返回null即可。例如:

function WarningBanner(props) { 
 if (!props.warn) {
 return null;
 }

 return (
 <div className="warning">
 Warning!
 </div>
 );
}

class Page extends React.Component { 
 constructor(props) {
 super(props);
 this.state = {showWarning: true}
 this.handleToggleClick = this.handleToggleClick.bind(this);
 }

 handleToggleClick() {
 this.setState(prevState => ({
 showWarning: !prevState.showWarning
 }));
 }

 render() {
 return (
 <div>
 <WarningBanner warn={this.state.showWarning} />
 <button onClick={this.handleToggleClick}>
  {this.state.showWarning ? 'Hide' : 'Show'}
 </button>
 </div>
 );
 }
}

ReactDOM.render( 
 <Page />,
 document.getElementById('root')
);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对的支持。


# react  # 条件渲染  # 重新渲染  # react重新渲染组件  # React中条件渲染的常见方法总结  # React中进行条件渲染的实现方法  # React条件渲染实例讲解使用  # React 条件渲染最佳实践小结(7种)  # 详解React 条件渲染  # 详解React 的几种条件渲染以及选择  # React组件化条件渲染的实现  # 你可以  # 不需要  # 可以用  # 还可以  # 如有  # 更大  # 不是很  # 你还  # 这篇文章  # 就来  # 谢谢大家  # 可以根据  # 来实现  # 返回值  # 更短  # GuestGreeting  # ReactDOM  # gt  # UserGreeting  # render 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  高端企业智能建站程序:SEO优化与响应式模板定制开发  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  如何用wdcp快速搭建高效网站?  *服务器网站为何频现安全漏洞?  如何利用DOS批处理实现定时关机操作详解  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速搭建个人网站并优化SEO?  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  网站制作壁纸教程视频,电脑壁纸网站?  如何获取PHP WAP自助建站系统源码?  怎么用AI帮你设计一套个性化的手机App图标?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何获取免费开源的自助建站系统源码?  如何快速查询域名建站关键信息?  JavaScript常见的五种数组去重的方式  如何快速打造个性化非模板自助建站?  微信小程序 require机制详解及实例代码  大同网页,大同瑞慈医院官网?  如何在IIS中新建站点并解决端口绑定冲突?  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  网站制作报价单模板图片,小松挖机官方网站报价?  高端云建站费用究竟需要多少预算?  如何彻底删除建站之星生成的Banner?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  Laravel集合Collection怎么用_Laravel集合常用函数详解  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  香港服务器租用费用高吗?如何避免常见误区?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何在云虚拟主机上快速搭建个人网站?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何快速上传自定义模板至建站之星?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何在VPS电脑上快速搭建网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何实现模型的全局作用域?(Global Scope示例)  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何在Windows环境下新建FTP站点并设置权限?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何在景安服务器上快速搭建个人网站?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  深圳网站制作培训,深圳哪些招聘网站比较好?  韩国服务器如何优化跨境访问实现高效连接?