iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >怎么在React条件渲染中使用三元表达式
  • 458
分享到

怎么在React条件渲染中使用三元表达式

2024-04-02 19:04:59 458人浏览 八月长安
摘要

本篇内容介绍了“怎么在React条件渲染中使用三元表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!三元

本篇内容介绍了“怎么在React条件渲染中使用三元表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

三元表达式 vs if/else

假设我们有一个组件被传进来一个 name 属性。 如果这个字符串非空,我们会显示一个问候语。否则,我们会告诉用户他们需要登录。

这是一个只实现了如上功能的无状态函数式组件(SFC)。

const MyComponent = ({ name }) => {  if (name) {    return (      <div className="hello">        Hello {name}      </div>    );  }  return (    <div className="hello">      Please sign in    </div>  );};

这个很简单但是我们可以做得更好。这是使用三元运算符conditional ternary operator编写的相同组件。

const MyComponent = ({ name }) => (  <div className="hello">    {name ? `Hello ${name}` : 'Please sign in'}  </div>);

请注意这段代码与上面的例子相比是多么简洁。

有几点需要注意。因为我们使用了箭头函数的单语句形式,所以隐含了return 语句。另外,使用三元运算符允许我们省略掉重复的 <div className="hello"> 标记。

三元表达式 vs &&

正如您所看到的,三元表达式用于表达 if/else 条件式非常好。但是对于简单的 if 条件式怎么样呢?

让我们看另一个例子。如果 isPro(一个布尔值)为真,我们将显示一个奖杯表情符号。我们也要渲染星星的数量(如果不是 0)。我们可以这样写。

const MyComponent = ({ name, isPro, stars}) => (  <div className="hello">    <div>      Hello {name}      {isPro ? '♨' : null}    </div>    {stars ? (      <div>        Stars:{'☆'.repeat(stars)}      </div>    ) : null}  </div>);

请注意 else 条件返回 null 。 这是因为三元表达式要有“否则”条件。

对于简单的 if 条件式,我们可以使用更合适的东西:&& 运算符。这是使用 && 编写的相同代码。

const MyComponent = ({ name, isPro, stars}) => (  <div className="hello">    <div>      Hello {name}      {isPro && '♨'}    </div>    {stars && (      <div>        Stars:{'☆'.repeat(stars)}      </div>    )}  </div>);

没有太多区别,但是注意我们消除了每个三元表达式***面的 : null (else 条件式)。一切都应该像以前一样渲染。

嘿!约翰得到了什么?当什么都不应该渲染时,只有一个 0。这就是我上面提到的陷阱。这里有解释为什么:

根据 MDN,一个逻辑运算符“和”(也就是 &&):

expr1 && expr2

如果 expr1 可以被转换成 false ,返回 expr1;否则返回 expr2。 如此,当与布尔值一起使用时,如果两个操作数都是 true&& 返回 true ;否则,返回 false

好的,在你开始拔头发之前,让我为你解释它。

在我们这个例子里, expr1 是变量 stars,它的值是 0,因为 0 是假值,0 会被返回和渲染。看,这还不算太坏。

我会简单地这么写。

如果 expr1 是假值,返回 expr1 ,否则返回 expr2

所以,当对非布尔值使用 && 时,我们必须让这个假值返回 React 无法渲染的东西,比如说,false 这个值。

我们可以通过几种方式实现这一目标。让我们试试吧。

{!!stars && (  <div>    {'☆'.repeat(stars)}  </div>)}

注意 stars 前的双感叹操作符(!!)(呃,其实没有双感叹操作符。我们只是用了感叹操作符两次)。

***个感叹操作符会强迫 stars 的值变成布尔值并且进行一次“非”操作。如果 stars0 ,那么 !stars 会是 true

然后我们执行第二个操作,所以如果 stars0!!stars 会是 false。正好是我们想要的。

如果你不喜欢 !!,那么你也可以强制转换出一个布尔数比如这样(这种方式我觉得有点冗长)。

{Boolean(stars) && (

或者只是用比较符产生一个布尔值(有些人会说这样甚至更加语义化)。

{stars > 0 && (
关于字符串

空字符串与数字有一样的毛病。但是因为渲染后的空字符串是不可见的,所以这不是那种你很可能会去处理的难题,甚至可能不会注意到它。然而,如果你是***主义者并且不希望 DOM 上有空字符串,你应采取我们上面对数字采取的预防措施。

其它解决方案

一种可能的将来可扩展到其他变量的解决方案,是创建一个单独的 shouldRenderStars 变量。然后你用 && 处理布尔值。

const shouldRenderStars = stars > 0;
return (  <div>    {shouldRenderStars && (      <div>        {'☆'.repeat(stars)}      </div>    )}  </div>);

之后,在将来,如果业务规则要求你还需要已登录,拥有一条狗以及喝淡啤酒,你可以改变 shouldRenderStars 的得出方式,而返回的内容保持不变。你还可以把这个逻辑放在其它可测试的地方,并且保持渲染明晰。

const shouldRenderStars =   stars > 0 && loggedIn && pet === 'dog' && beerPref === 'light`;
return (  <div>    {shouldRenderStars && (      <div>        {'☆'.repeat(stars)}      </div>    )}  </div>);

“怎么在React条件渲染中使用三元表达式”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么在React条件渲染中使用三元表达式

本文链接: https://www.lsjlt.com/news/85741.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在React条件渲染中使用三元表达式
    本篇内容介绍了“怎么在React条件渲染中使用三元表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!三元...
    99+
    2024-04-02
  • React中怎么实现条件渲染
    今天就跟大家聊聊有关React中怎么实现条件渲染,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. if-else我们可以将 if-else 条件逻...
    99+
    2024-04-02
  • 怎么在python中使用if三元表达式
    今天就跟大家聊聊有关怎么在python中使用if三元表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,...
    99+
    2023-06-14
  • sql三元表达式怎么使用
    在SQL中,可以使用CASE语句来模拟三元表达式。例如,可以使用以下语法来实现三元表达式: SELECT column_na...
    99+
    2024-04-16
    sql
  • 怎么使用React虚拟渲染实现多个图表渲染
    今天小编给大家分享一下怎么使用React虚拟渲染实现多个图表渲染的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需求每行渲染3...
    99+
    2023-07-02
  • Component里的条件渲染机制怎么使用
    这篇文章主要讲解了“Component里的条件渲染机制怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Component里的条件渲染机制怎么使用”吧!SAP UI5 web Compo...
    99+
    2023-06-04
  • Python中怎么实现三元表达式嵌套
    这篇文章给大家介绍Python中怎么实现三元表达式嵌套,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。请看代码案例:cmp = lambda a, b: 0 i...
    99+
    2023-06-16
  • JTable渲染器怎么在Java中使用
    JTable渲染器怎么在Java中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JButtonTableExample.javapackage a...
    99+
    2023-05-30
    java jtable
  • python如何在三元运算符中使用条件
    小编给大家分享一下python如何在三元运算符中使用条件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在三元运算符中使用条件在大多数情况下,我们在Python中使用嵌套的条件结构。 除了使用嵌套结构,还可以在三元运算符的帮...
    99+
    2023-06-27
  • lambda表达式怎么在Java8中使用
    lambda表达式怎么在Java8中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。lambda 表达式的语法lambda 表达式由参数,->,以及函数体三部分组成。其...
    99+
    2023-05-31
    java8 lambda ava
  • 怎么在Java8中使用Lambda表达式
    怎么在Java8中使用Lambda表达式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. lambda表达式介绍lambda表达式是Java8提供的新特性之一,也可以称之为闭...
    99+
    2023-06-14
  • 怎么在shell中使用正则表达式
    怎么在shell中使用正则表达式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。正则表达式概述正则表达式是一种定义的规则,Linux工具可以用它来过滤文本。基础正则表达式纯文...
    99+
    2023-06-09
  • 在VB中怎么使用正则表达式
    这篇文章主要为大家展示了“在VB中怎么使用正则表达式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在VB中怎么使用正则表达式”这篇文章吧。 启动 Microsoft Visual Basic 6...
    99+
    2023-06-17
  • 如何在PHP8中使用Match表达式更简洁地判断条件?
    如何在PHP8中使用Match表达式更简洁地判断条件?在PHP8中,引入了一种新的条件判断语法 - Match表达式,它可以让我们以更简洁的方式判断多个条件并执行相应的代码块。Match表达式的作用类似于switch语句,但比switch更...
    99+
    2023-10-22
    PHP Match表达式 简洁判断条件
  • 怎么在Java中使用正则表达式API
    本文小编为大家详细介绍“怎么在Java中使用正则表达式API”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在Java中使用正则表达式API”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言:在正则表达式的世...
    99+
    2023-07-02
  • Java中怎么利用正则表达式实现条件查询
    本篇文章给大家分享的是有关Java中怎么利用正则表达式实现条件查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java正则表达式实现条件查询实例://Java正则表达式实现条...
    99+
    2023-06-17
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • 使用layui时form表单中select等不能渲染怎么办
    小编给大家分享一下使用layui时form表单中select等不能渲染怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.使...
    99+
    2024-04-02
  • CSS中怎么使用expression表达式
    这篇文章主要介绍“CSS中怎么使用expression表达式”,在日常操作中,相信很多人在CSS中怎么使用expression表达式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • 怎么在CSS选择器中使用正则表达式
    怎么在CSS选择器中使用正则表达式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。正则表达式世界的规则。例如:字符^表示字符串开始位置匹配;字符$表示字符串结束位置匹配;字符...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作