react 逻辑 AND 运算符 (&&)

简介: react 逻辑 AND 运算符 (&&)

React 组件中,当你想在条件为 true 时渲染一些 JSX 时,它经常会出现,或者什么都不渲染。使用 ,只有在以下情况下才能有条件地呈现复选标记:&&isPackedtrue

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

您可以将其理解为“if isPacked, then (&&) render the checkmark, else , render nothing ”

这是在行动:

function Item({ name, isPacked }) {
  return (
    <li className="item">
      {name} {isPacked && '✔'}
    </li>
  );
}
 
export default function PackingList() {
  return (
    <section>
      <h1>Sally Ride's Packing List</h1>
      <ul>
        <Item 
          isPacked={true} 
          name="Space suit" 
        />
        <Item 
          isPacked={true} 
          name="Helmet with a golden leaf" 
        />
        <Item 
          isPacked={false} 
          name="Photo of Tam" 
        />
      </ul>
    </section>
  );
}

如果 JavaScript 的左侧(我们的条件)为 ,则 JavaScript && 表达式返回其右侧的值(在本例中为复选标记)。但是如果条件是 ,则整个表达式变为 。React 将其视为 JSX 树中的一个“洞”,就像 或 一样,并且不会在其位置上渲染任何东西。truefalsefalsefalsenullundefined

不要将数字放在 &&. 的左侧。

为了测试条件,JavaScript 会自动将左侧转换为布尔值。但是,如果左侧是 ,那么整个表达式都会得到该值 (),并且 React 会很乐意渲染而不是什么都没有。000

例如,一个常见的错误是编写类似 .很容易假设它在 is 时什么都不渲染,但它确实渲染了它本身!messageCount && <p>New messages</p>messageCount00

要修复它,请将左侧设为布尔值:。messageCount > 0 && <p>New messages</p>

 

 

有条件地将 JSX 分配给变量

当快捷方式妨碍编写纯代码时,请尝试使用语句和变量。您可以重新分配使用 let 定义的变量,因此首先提供要显示的默认内容,即名称:if

let itemContent = name;


使用语句将 JSX 表达式重新赋值给 if :ifitemContentisPackedtrue

if (isPacked) {
itemContent = name + " ✔";
}


大括号打开“JavaScript 之窗”。在返回的 JSX 树中嵌入带有大括号的变量,将先前计算的表达式嵌套在 JSX 中:

<li className="item">
{itemContent}
</li>


这种风格是最冗长的,但也是最灵活的。这是在行动:

function Item({ name, isPacked }) {
  let itemContent = name;
  if (isPacked) {
    itemContent = name + " ✔";
  }
  return (
    <li className="item">
      {itemContent}
    </li>
  );
}
 
export default function PackingList() {
  return (
    <section>
      <h1>Sally Ride's Packing List</h1>
      <ul>
        <Item 
          isPacked={true} 
          name="Space suit" 
        />
        <Item 
          isPacked={true} 
          name="Helmet with a golden leaf" 
        />
        <Item 
          isPacked={false} 
          name="Photo of Tam" 
        />
      </ul>
    </section>
  );
}


相关文章
|
28天前
|
前端开发 JavaScript API
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
7月前
|
前端开发
探索React Hooks:一种全新的组件逻辑管理方式
React Hooks是React 16.8版本引入的一项新功能,它改变了我们编写React组件的方式。本文将从Hooks的起源讲起,逐步分析Hooks的优势,并通过具体示例展示Hooks在组件逻辑管理中的应用,旨在帮助读者更好地理解和运用React Hooks。
|
7月前
|
前端开发 JavaScript
深入理解React中的useReducer:管理复杂状态逻辑的利器
深入理解React中的useReducer:管理复杂状态逻辑的利器
|
存储 设计模式 JSON
React组件封装和逻辑复用新解
a. 组件封装 • RenderProps增强版 • Web Component • 配置化(LCD) b. 逻辑复用 • 中间件(MiddleWare) • Redux Thunk • 监听history • stateComponment
295 0
|
前端开发 JavaScript 程序员
深入面试系列1:React复用组件逻辑
深入面试系列1:React复用组件逻辑
235 0
深入面试系列1:React复用组件逻辑
|
前端开发
react项目实战学习笔记-学习51-删除逻辑实现
react项目实战学习笔记-学习51-删除逻辑实现
76 0
|
前端开发
react项目实战学习笔记-学习16-注册逻辑 跨域解决
react项目实战学习笔记-学习16-注册逻辑 跨域解决
110 0
|
1月前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
77 9