有条件地反应渲染 JSX

2023-12-08

这里我创建一个局部变量persons在 - 的里面App类然后分配一个JSX根据某些条件传递给它,然后传递它({persons}) 里面render() method.

let persons = null;

if (this.state.showPerson) {
 persons = (
<div>
  <RenderPerson 
    name={this.state.customers[0].name} 
    age={this.state.customers[0].age}  />

  <RenderPerson 
    name={this.state.agents[1].name}
    age={this.state.agents[1].age} />

</div>
 );
}

我收到编译错误let showPersons = null;。在 VS 代码中,如果我将鼠标悬停在红色标记线上let它说的关键字:[js] Unexpected token. A constructor, method, accessor, or property was expected.


你可以按照卡洛在他的帖子中建议的去做。但是,您可能不需要persons根本没有变量。因此,如果您在应用程序的其他地方不需要该变量,请考虑以下解决方案:

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      showPerson: false
    }
  }
  render() {
    return (
      {this.state.showPerson && <div>
        <RenderPerson 
          name={this.state.customers[0].name} 
          age={this.state.customers[0].age}
        />
        <RenderPerson 
          name={this.state.agents[1].name}
          age={this.state.agents[1].age}
        />
      </div>}
    );
  }
}

上面的语法称为短路评估:

由于逻辑表达式是从左到右计算的,因此使用以下规则测试可能的“短路”计算:

  • false && (anything) is short-circuit evaluated to false.
  • true || (anything) is short-circuit evaluated to true.

在您的应用程序中,这意味着:

  • If this.state.showPerson是假的,那么false && JSX = false,什么也不渲染。
  • If this.state.showPerson是真的,那么true && JSX = true,它会呈现您的 JSX。

或者,您也可以使用三元表达式:

condition ? expr1 : expr2

If condition为 true 时,运算符返回的值expr1;否则,它返回的值expr2

在您的应用程序中将是:

return (
  {this.state.showPerson ? <div>
    <RenderPerson 
      name={this.state.customers[0].name} 
      age={this.state.customers[0].age}
    />
    <RenderPerson 
      name={this.state.agents[1].name}
      age={this.state.agents[1].age}
    />
  </div> : null}
);

但我个人更喜欢前一种解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有条件地反应渲染 JSX 的相关文章

随机推荐

  • 对 Java 中另一个类中实例化/初始化的对象的引用变量

    我问的原因是因为我收到 NullPointerException 我现在这很容易 但我是一个相当新的编程人员 发现这有点令人困惑 假设我已经初始化了一个类中的一个对象 并且想要从另一个类访问同一对象 就像现在 我正在开发一个小型国际象棋游戏
  • Linux 中 Socket 的发送缓冲区为空?

    有没有办法检查 TCP 连接的发送缓冲区是否完全为空 到目前为止我还没有找到任何东西 只是想确保在仍有数据传输到某个客户端时我的服务器没有关闭连接 我正在使用轮询来检查是否能够在非阻塞套接字上发送数据 但这样我就无法知道是否所有内容都已发送
  • CSS多行省略号跨浏览器

    我的网页中有一个具有固定宽度和高度的 div 以下 css 仅适用于单行文本 overflow hidden text overflow ellipsis white space nowrap 如何使用具有跨浏览器兼容性的纯 css 在该
  • 如何检查是否授予“android.permission.PACKAGE_USAGE_STATS”权限?

    背景 我正在尝试获取应用程序启动的统计信息 在 Lollipop 上可以使用使用情况统计管理器类 本身 原帖here 显现
  • 如何在一般github的markdown中显示数学方程(不是github的博客)

    经过调查 我发现 mathjax 可以做到这一点 但是当我在 markdown 文件中编写一些示例时 它没有显示正确的方程 我已将其添加到 markdown 文件的头部 并输入 mathjax 语句 E mc 2 x 1 2 frac b
  • 如何使谷歌地图中的标记图像闪烁

    我在地图上有一些标记 代码部分在这里 var icons media green png media red png media blue png media yellow png var marker new google maps Ma
  • 折线的距离

    我正在折线中工作 我需要获得它的距离 因此 如果有人可以提供帮助 我将非常感激 此致 这是我的代码 function polyline downloadUrl xmlPolyline asp function data var xml xm
  • javafx fxml 组合框错误

    我试图将字符串添加到 javafx 组合框 但我不断收到上述错误 no suitable method found for add String method Collection add CAP 1 is not applicable a
  • Java 是否保证 Object.getClass() == Object.getClass()?

    我在这里确实指的是身份平等 例如 以下内容是否总是打印true System out println foo getClass fum getClass 是的 类标记是唯一的 对于任何给定的类加载器来说 IE 您将始终获得对同一物理对象的引
  • Android 应用程序 - 尝试在空对象引用上调用接口方法“int java.util.List.size()”

    我正在创建一个在网格视图中显示电影海报的应用程序 我正在使用 themoviedb org 的 API 问题是当我运行我的应用程序时出现以下错误 并且我正在努力修复它 07 18 20 27 39 244 2751 2751 E Andro
  • 如何在 swift 中使用 Gmail api 发送电子邮件

    The 邮箱API没有关于如何执行此操作的明确文档 我一直在尝试this但空气中有很多东西 我已经寻找过这样的外部资源 Source 1 and Source 2 第一个似乎利用了api的潜力 使用了函数queryForUsersMessa
  • jQuery 无法与我的 Blazor 应用程序正常工作

    我有以下脚本 它在从浏览器启动的简单 html 文件中运行良好 scroll to click event gt whatever here 但是 当将其与 Blazor 一起使用时 单击我的按钮时不会触发它 我找到了一个解决方法 即将第一
  • 如何订阅通过@angular/cdk/portal注入的组件的Observable?

    我正在尝试实现一个基本的 非常基本的 模式实现 我有一个ModalService and a ModalComponent The ModalService创建一个实例ModalComponent并使用 angular cdk portal
  • 验证 Azure Active Directory 中是否存在用户帐户

    我需要遵循一些业务规则 从 ASP NET Core 2 应用程序向用户发送电子邮件 但是 我需要确保电子邮件发送到的帐户确实存在 由于某种原因 该帐户可能不再有效 客户正在使用 Azure Active Directory 因此我需要以某
  • 使用索引替换值 [R]

    我正在尝试使用索引来识别哪些行要根据另一个 DF 的联接创建新列 使用索引时我无法执行 match df1 lt data frame A c A C E B c 1 3 5 df2 lt data frame A c A C E C c
  • 确定 C 中动态分配内存的大小

    C 有没有办法找出动态分配的内存的大小 例如 之后 char p malloc 100 有没有办法找出与相关的内存大小p 没有找到此信息的标准方法 然而 一些实现提供了类似的功能msize去做这个 例如 msize在 Windows 上 m
  • Selenium WebDriver - 没有驱动程序适合我

    我正在尝试运行 Selenium 测试 我正在使用 C 我尝试过的每个驱动程序都存在问题 Chrome var options new OpenQA Selenium Chrome ChromeOptions options BinaryL
  • 解压缩 gzip 压缩的 http 响应

    我正在使用 phpfile get contents 函数执行 HTTP 请求 为了节省带宽 我决定添加 Accept Encoding gzip 标头使用stream context create 明显地 file get content
  • NSURLConnection 下载多张图片

    我正在尝试从 XML 提要中存储的 URL 下载多个图像 从 XML 获取图像 url 工作正常 但是 NSURLConnection 正在创建空文件 但数据已按照 NSLog 中的说明接收 在connectionDidFinishLoad
  • 有条件地反应渲染 JSX

    这里我创建一个局部变量persons在 的里面App类然后分配一个JSX根据某些条件传递给它 然后传递它 persons 里面render method let persons null if this state showPerson p