当前位置: 首页 > news >正文

React 条件渲染

开发环境:React+ts+antd

通常你的组件会需要根据不同的情况显示不同的内容。在 React 中,你可以通过使用 JavaScript 的 if 语句、&& 和 ? : 运算符来选择性地渲染 JSX。

例子
我们在满足 isPacked={true} 条件的物品清单旁加上一个勾选符号✔。

import React from "react";

interface ListPro {
    name:string,
    isPacked:boolean,
}

const Item:React.FC<ListPro> =({name,isPacked})=>{
	if (isPacked) {
        return <li className="item">{name}</li>;
    }
    return <li className="item">{name}</li>;
}

const App: React.FC = () => {
    return (
        <div>
            <h1>Sally Ride 的行李清单</h1>
            <Item
                isPacked={true}
                name="宇航服"
            />
            <Item
                isPacked={true}
                name="带金箔的头盔"
            />
            <Item
                isPacked={false}
                name="Tam 的照片"
            />
        </div>
    )
}
export default App;

在这里插入图片描述

此条件判断处可以使用三目运算,或者是与运算符(&&), 运行结果是一样的

return (
        <li className="item">
            {isPacked ? name + ' ✔' : name} 
        </li>
    );
 return (
        <li className="item">
            {name} {isPacked && '✔'}
        </li>
    );

注意:切勿将数字放在 && 左侧.

JavaScript 会自动将左侧的值转换成布尔类型以判断条件成立与否。然而,如果左侧是 0,整个表达式将变成左侧的值(0),React 此时则会渲染 0 而不是不进行渲染。

例如,一个常见的错误是 messageCount &&

New messages

。其原本是想当 messageCount 为 0 的时候不进行渲染,但实际上却渲染了 0。

为了更正,可以将左侧的值改成布尔类型:messageCount > 0 &&

New messages

接下来我们给未完成的物品加上图标,当 isPacked 不为 true 时,使用条件运算符 (cond ? a : b) 来渲染 ❌

return (
        <li className="item">
            {isPacked ? name + '✔' : name + '❌'}
        </li>
    );

运行结果如下:
在这里插入图片描述

例子是参考React官方文档教程,不同的是我这里使用TS来写

相关文章:

  • Agent2Agent协议学习资源大全:从理论到实践
  • 【Linux】单例模式及其在线程池中的应用
  • Spring Boot 集成 POI
  • 【Deepseek基础篇】--v3基本架构
  • 【SLAM】将realsense-viewer录制的rosbag视频导出成图片序列(RealSense D435)
  • 二分算法的入门笔记
  • Linuix基础11
  • Python:开启自动化办公与游戏开发的无限可能
  • mybatis plus 分页查询出来数据后对他二次 修改数据 封装返回
  • JAVA EE_多线程-初阶(三)
  • 驱动开发硬核特训 · Day 6 : 深入解析设备模型的数据流与匹配机制 —— 以 i.MX8M 与树莓派为例的实战对比
  • 第十六届蓝桥杯大赛软件赛省赛 Python 大学 B 组 部分题解
  • 辛格迪客户案例 | 西藏奇正藏药MES项目
  • 【Docker基础】深入解析 Docker 存储卷:管理、绑定与实战应用
  • 安宝特新闻丨Vuzix Core™波导助力AR,视角可调、高效传输,优化开发流程
  • echarts地图添加涟漪波纹点位
  • PostgreSQL技术大讲堂 - 第86讲:数据安全之--data_checksums天使与魔鬼
  • 多模态学习分析(MLA)驱动高中差异化教学策略研究
  • 单卡4090微调大模型 DeepSeek-R1-32B
  • 人工智能时代教育主体性的哲学反思与技术治理
  • 西安网站开发有哪些公司/域名交易
  • 商丘网站优化/快速提升网站排名
  • 如何做社团网站/品牌营销推广公司
  • wordpress ftp下载/常州网站优化
  • windows wordpress伪静态/seo优化工作内容
  • 社区网站如何做/阿里云域名注册入口