当前位置: 首页 > 面试题库 >

使用短路(&&)条件组件反应显示0而不是什么

蒋昊天
2023-03-14
问题内容

我有以下简单的短路语句,应显示一个组件或不显示任何内容:

{profileTypesLoading && <GeneralLoader />}

如果该语句为假,则呈现a 0而不是什么。

我所做的console.log(profileTypesLoading)只是为了快速查看该profileTypesLoading属性的状态,它是预期的1或0。0应该为假…什么也不会渲染。对?

知道为什么会这样吗?


问题答案:

因为你的条件是falsy,因此不会返回第二个参数<GeneralLoader />),它会返回profileTypesLoading,这是一个数字,所以反应会使其因为阵营跳过渲染什么,是typeof
booleanundefined
,并会呈现什么是typeof
stringnumber

为了安全起见,您可以使用三元表达式{condition ? <Component /> : null}或布尔值将条件转换为{!!condition && <Component />}



 类似资料:
  • 我看过一些代码,其中人们使用了带有两个“!”的条件子句s 这是我能找到的一些例子。 使用有什么好处超过?

  • 我尝试有多个路由,所以我可以从一个路由重定向到另一个路由,但是每次我添加另一个路由时,主端都会同时呈现样式和组件,我尝试过lazyLoad、Switch并在路由路径中添加“精确”

  • 我正在使用React路由器开发React web应用程序。在我的应用程序中。我已经导入了js文件头和主组件。在home组件中,我有两个组件,分别称为在线银行和信用卡,它们是我从在线银行导入的。js和信用卡。js文件。 当用户单击主页中的链接按钮时。js组件、在线银行和信用卡组件应呈现。 相反,我得到了一个名为error:Invariant failed的错误:您不应该使用 为什么它不起作用? 索引

  • I my app.js我已将路线定义为: 在我的中,我有一个链接: 但问题是,当我在aboue path中设置prop'确切={true}时,找不到这个路径 当我没有在上面的路径中设置exact={true}时,在同一页面上呈现路径组件及其下方的路径组件

  • 我正在使用Vue router指向src文件中名为components的文件夹中的不同组件,这很奇怪,但所有组件中的模板都是相同的,我导入了文件并以完全相同的方式定义了路由,当然除了我的主文件中的确切组件文件名之外。js文件 这是我的main.js档案 奇怪的是,它们都展示了两个组成部分,家。vue和聚会。vue,其余的根本不显示。有人能帮忙吗?同样,组件模板本身是相同的,以防您漫游,提前感谢)

  • 我对IntelliJ有问题--如果我用Ctrl+单击该类,它会显示一个类的“反编译”版本,而不是它的源代码。 这就是我所看到的: 我正在尝试打开常规的JDK源文件。 src.zip没有损坏-我可以通过WinRAR打开它 当将JDK1.8.0_161添加到IntelliJ中时,它会自动找到src.zip。当手动将src.zip添加到jbsdk8u112b287.2_windows_x86 Sourc