React 条件渲染

开发环境:React+ts+antd

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

例子

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

javascript 复制代码
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;

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

javascript 复制代码
return (
        <li className="item">
            {isPacked ? name + ' ✔' : name} 
        </li>
    );
javascript 复制代码
 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) 来渲染 ❌

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

运行结果如下:

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

相关推荐
人工智能训练6 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪7 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
2601_949593657 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9228 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233228 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头882110 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas13610 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠10 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
珑墨10 小时前
【Turbo】使用介绍
前端
军军君0111 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three