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门面模式与底层机制
深圳网站制作培训,深圳哪些招聘网站比较好?
韩国服务器如何优化跨境访问实现高效连接?

