react 的条件渲染

使用 if/else 语句

可以在 JSX 中使用普通的 JavaScript `if`/`else` 语句来进行条件渲染。

javascript 复制代码
import React from 'react';
function ConditionalRender(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  } else {
    return <GuestGreeting />;
  }
}
function UserGreeting() {
  return <h1>Welcome back!</h1>;
}
function GuestGreeting() {
  return <h1>Please sign up.</h1>;
}
export default ConditionalRender;
使用三元运算符

另一种常见的方式是使用 JavaScript 中的三元运算符来进行条件渲染。

javascript 复制代码
import React from 'react';
function ConditionalRender(props) {
  const isLoggedIn = props.isLoggedIn;
  return (
    <div>
      {isLoggedIn ? (
        <UserGreeting />
      ) : (
        <GuestGreeting />
      )}
    </div>
  );
}
function UserGreeting() {
  return <h1>Welcome back!</h1>;
}
function GuestGreeting() {
  return <h1>Please sign up.</h1>;
}
export default ConditionalRender;

使用逻辑 && 运算符

在 React 中,还可以使用逻辑 `&&` 运算符进行简单的条件渲染。例如:

javascript 复制代码
import React from 'react';
function ConditionalRender(props) {
  const isLoggedIn = props.isLoggedIn;
  return (
    <div>
      {isLoggedIn && <UserGreeting />}
      {!isLoggedIn && <GuestGreeting />}
    </div>
  );
}
function UserGreeting() {
  return <h1>Welcome back!</h1>;
}
function GuestGreeting() {
  return <h1>Please sign up.</h1>;
}
export default ConditionalRender;
使用条件运算符

有时需要更复杂的条件逻辑,可以使用条件运算符 (`? :`):

javascript 复制代码
import React from 'react';
function ConditionalRender(props) {
  const isLoggedIn = props.isLoggedIn;
  const isAdmin = props.isAdmin;
  return (
    <div>
      {isLoggedIn ? (
        isAdmin ? (
          <h1>Welcome admin!</h1>
        ) : (
          <h1>欢迎 用户</h1>
        )
      ) : (
        <h1>请先登录</h1>
      )}
    </div>
  );
}
export default ConditionalRender;
相关推荐
拖孩27 分钟前
一个人 + AI 做的小程序,上线 15 天赚了 10 块 5
前端·后端·微信小程序
用户939838294159928 分钟前
安卓自动化脚本热更新怎么做?不重新打包 APK 也能更新代码
前端
全栈项目管理程序猿39 分钟前
ArcGIS JS 基础教程(13):屏幕坐标与地理坐标互转
javascript
猫七先生41 分钟前
在 React 里用 PMTiles 自托管底图
前端
tanghonghanhaoli42 分钟前
【图书翻译】有意义的游戏设计:桌面游戏的方法论与心理学(第1、2章)
前端·游戏·ui
光影少年43 分钟前
react native打包优化、包体积瘦身、离线包/热更新方案
前端·react native·react.js
Cache技术分享1 小时前
504. Java 反射 - 创建一个简单的依赖注入框架
前端·后端
_codeOH1 小时前
# 手把手复刻 DeepSeek 官网效果:玻璃拟态 + WebGL 流体 + Spring 动画,一篇讲透
前端
名字还没想好☜1 小时前
Next.js 用 cookies()/headers() 读请求信息:动态渲染触发、缓存失效与在 Server Action 里读写 cookie
前端·javascript·缓存·react·next.js·app router
今日无bug1 小时前
从「拿来主义」到「亲手造轮子」:2 种 MCP 文件服务器写法对比
前端·node.js·mcp