ReactJS 教程

ReactJS 主页 ReactJS 简介 ReactJS 路线图 ReactJS 下载安装和环境配置 ReactJS 功能 ReactJS 优势和缺点 ReactJS 架构 ReactJS 创建 React 应用程序 ReactJS JSX ReactJS 组件 ReactJS 嵌套组件 ReactJS 使用组件 ReactJS 集合组件 ReactJS 样式 ReactJS 属性 (props) ReactJS 使用属性创建组件 ReactJS props 验证 ReactJS 构造函数 ReactJS 组件生命周期 ReactJS 事件管理 ReactJS 创建事件感知组件 ReactJS Expense Manager 事件 ReactJS 状态管理 ReactJS 状态管理 API ReactJS 无状态组件 ReactJS Hooks 进行状态管理 ReactJS Hooks 的组件生命周期 ReactJS 布局组件 ReactJS 分页 ReactJS Material UI ReactJS Http 客户端编程 ReactJS 表单编程 ReactJS 受控组件 ReactJS 非受控组件 ReactJS Formik ReactJS 条件渲染 ReactJS 列表 ReactJS Key 键 ReactJS 路由 ReactJS Redux ReactJS 动画 ReactJS Bootstrap ReactJS Map ReactJS 表格 ReactJS 使用 Flux 管理状态 ReactJS 测试 ReactJS CLI 命令 ReactJS 构建和部署 ReactJS 示例

Hooks

ReactJS Hooks 简介 ReactJS 使用 useState ReactJS 使用 useEffect ReactJS 使用 useContext ReactJS 使用 useRef ReactJS 使用 useReducer ReactJS 使用 useCallback ReactJS 使用 useMemo ReactJS 自定义 Hooks

ReactJS 高级

ReactJS 可访问性 ReactJS 代码拆分 ReactJS 上下文 ReactJS 错误边界 ReactJS 转发 Refs ReactJS 片段 ReactJS 高阶组件 ReactJS 与其他库集成 ReactJS 优化性能 ReactJS Profiler API ReactJS Portals ReactJS 不使用 ES6 ECMAScript ReactJS 不使用 JSX 的 React ReactJS Reconciliation ReactJS Refs 和 DOM ReactJS 渲染道具 ReactJS 静态类型检查 ReactJS 严格模式 ReactJS Web 组件

其他概念

ReactJS 日期选择器 ReactJS Helmet ReactJS 内联样式 ReactJS PropTypes ReactJS BrowserRouter ReactJS DOM ReactJS 轮播 ReactJS 图标 ReactJS 表单组件 ReactJS 参考 API

ReactJS 有用资源

ReactJS 快速指南 ReactJS 备忘录 Axios 备忘录 ReactJS 有用资源 ReactJS 讨论


ReactJS - 条件渲染

React 中的条件渲染

条件渲染用于根据情况向用户显示/隐藏 UI 的某个部分。例如,如果用户未登录 Web 应用程序,Web 应用程序将显示登录按钮。当用户登录 Web 应用程序时,相同的链接将被欢迎消息替换。

让我们了解 React 提供的支持条件渲染的选项。

条件渲染的方法

React 提供了多种在 Web 应用程序中进行条件渲染的方法。它们如下 −

  • 条件语句

  • JSX / UI 变量

  • 逻辑 && JSX 中的运算符

  • JSX 中的条件运算符

  • null 返回值

条件语句

条件语句是一种简单而直接的选项,可根据条件呈现 UI。我们假设要求编写一个组件,该组件将根据用户的登录状态显示登录链接或欢迎消息。以下是使用条件渲染的组件的实现,

function Welcome(props) {
   if(props.isLoggedIn) {
      return <div>Welcome, {props.userName}</div>
   } else {
      return <div><a href="/login">Login</a></div>
   }
}

这里,

  • 使用 isLoggedIn 属性来检查用户是否已登录。

  • 如果用户已登录,则返回欢迎消息。

  • 如果用户未登录,则返回登录链接。

该组件的使用方法如下所示 C−

function App() {
   return (
      <div className="container">
         <div style={{ padding: "10px" }}>
            <div>
               <Welcome isLoggedIn={true} userName={'John'} />
            </div>
         </div>
      </div>
   );
}

组件将呈现如下所示的欢迎消息 −

Conditional Rendering React

JSX / UI 变量

React 允许将 JSX 元素存储到变量中并在必要时使用它。开发人员可以通过条件语句创建必要的 JSX 并将其存储在变量中。将 UI 存储在变量中后,即可呈现,如下所示 −

function Welcome(props) {
   let output = null;
   if(props.isLoggedIn) {
      output = <div>Welcome, {props.userName}</div>
   } else {
      output = <div><a href="/login">Login</a></div>
   }
   return output
}

在这里,我们使用变量 output 来保存 UI。该组件的使用方法如下所示 −

function App() {
   return (
      <div className="container">
         <div style={{ padding: "10px" }}>
            <div>
               <Welcome isLoggedIn={true} userName={'John'} />
            </div>
         </div>
      </div>
   );
}

组件将呈现如下所示的欢迎消息 −

JSX UI Variable

逻辑 && 运算符

React 允许在 JSX 代码中使用任何表达式。在 Javascript 中,条件从左到右应用。如果最左边的条件为假,则不会处理下一个条件。开发人员可以利用此功能并在 JSX 本身中输出消息,如下所示 −

function ShowUsers(props) {
   return (
      <div>
         <ul>
            {props.users && props.users.length > 0 &&
               props.users.map((item) => 
                  (
                     <li>{item}</li>
                  )
               )}
         </ul>
      </div>
   );
}
export default ShowUsers;

这里,

  • 首先,将检查 props.users 是否可用。如果 props.users 为空,则不会进一步处理条件

  • 一旦 props.users 可用,将检查数组的长度,只有长度大于零时,才会进一步处理条件

  • 最后,props.users 将通过 map 函数循环,并将用户信息呈现为无序列表。

该组件可以按如下所示使用 −

function App() {
   const users = ['John', 'Peter']
   return (
      <div className="container">
         <div style={{ padding: "10px" }}>
            <div>
               <ShowUsers users={users} />
            </div>
         </div>
      </div>
   );
}

组件将呈现用户,如下所示 −

逻辑运算符

JSX 中的条件运算符

由于 React 允许在 JSX 中使用任何 javascript 表达式,因此开发人员可以在 JSX 中使用条件运算符 (a =b ? x : y),并仅呈现必要的 UI 元素,如下所示−

function Welcome(props) {
   if(props.isLoggedIn) {
      return props.isLoggedIn ?
      <div>Welcome, {props.userName}</div> : <div><a href="/login">Login</a></div>
   }
}

在这里,我们使用了条件运算符来显示欢迎消息或登录链接。该组件的使用方法如下所示 −

function App() {
   return (
      <div className="container">
         <div style={{ padding: "10px" }}>
            <div>
               <Welcome isLoggedIn={true} userName={'John'} />
            </div>
         </div>
      </div>
   );
}

组件将呈现如下所示的欢迎消息 −

Conditional Operator JSX

返回值 null

仅当组件返回 UI 元素时,React 才会呈现组件。否则,它会默默跳过渲染而不显示任何错误消息。开发人员可以利用此功能,仅在满足条件时呈现特定的 UI。

function Welcome(props) {
    return props.isLoggedIn ? <div>Welcome, {props.userName}</div> : null
}

这里,

  • 我们使用了条件运算符来显示/隐藏欢迎消息

  • null不呈现任何 UI

该组件可以按如下所示使用−

function App() {
   return (
      <div className="container">
         <div style={{ padding: "10px" }}>
            <div>
               <div>Welcome component will not output any content</div>
                  <Welcome isLoggedIn={false} />
               </div>
            </div>
         </div>
      </div>
   );
}

组件将呈现如下所示的欢迎消息 −

The Null Return Value

摘要

React 提供了多种有条件地呈现 UI 元素的方法。开发人员必须根据情况选择方法