根据条件决定渲染哪些内容,是 React 中最常用的技巧之一。

示例 1: if/else 条件渲染

点击按钮开始加载
function StatusDisplay({ status }) {
  if (status === "loading") return <Loading />;
  if (status === "success") return <Success />;
  if (status === "error") return <Error />;
  return <Idle />;
}

示例 2: 三元运算符

在线
function UserStatus({ isOnline }) {
  return (
    <span className={isOnline ? "online" : "offline"}>
      {isOnline ? "在线" : "离线"}
    </span>
  );
}
适用场景: 二选一的情况,如显示 A 或 B。

示例 3: && 逻辑与

5
5
// ✅ 正确:使用 count > 0
{count > 0 && <Badge>{count}</Badge>}

// ❌ 错误:count 为 0 时会渲染 "0"
{count && <Badge>{count}</Badge>}
注意: 使用 && 时,确保左侧是布尔值。数字 0 会被渲染为 "0"。

示例 4: || 和 ?? 默认值

🧑‍💻

张三

前端开发工程师

👤

李四

这个人很懒,什么都没写

👤

匿名用户

👤

匿名用户

这个人很懒,什么都没写

// || 会将空字符串视为假值
{name || "匿名用户"}  // "" → "匿名用户"

// ?? 只处理 null 和 undefined
{bio ?? "未设置"}  // "" → ""
                   // null → "未设置"
区别: || 会将 0、""、false 等假值都替换;?? 只替换 null 和 undefined。

示例 5: 提前返回

张三

zhangsan@example.com

function UserProfile({ user, loading, error }) {
  if (loading) return <Loading />;
  if (error) return <Error />;
  if (!user) return <NotFound />;

  // 主要逻辑,代码更清晰
  return <Profile user={user} />;
}

示例 6: 条件样式

// 根据 props 动态组合 className
const variantClasses = {
  primary: "bg-blue-600 text-white",
  secondary: "bg-zinc-200 text-zinc-800",
  danger: "bg-red-600 text-white",
};

<button className={`${baseClasses} ${variantClasses[variant]}`}>
  {children}
</button>