jsx: ReactJS if 条件

Posted

技术标签:

【中文标题】jsx: ReactJS if 条件【英文标题】:jsx: ReactJS if condition 【发布时间】:2021-08-13 08:21:28 【问题描述】:

如何在jsx中使用if条件:ReactJS?我只是想要,如果

if user == "author" or "supervisor":
<IconButton 
   aria-label="delete" 
   onClick=() => props.pressHandler(props.id)
 >
  <DeleteIcon style= color: 'red'  />
</IconButton>
else
     no delete button

【问题讨论】:

reactjs.org/docs/conditional-rendering.html 【参考方案1】:

只要把它们放在大括号里,

 ["author", "supervisor"].includes(user) &&
<IconButton 
   aria-label="delete" 
   onClick=() => props.pressHandler(props.id)
 >
  <DeleteIcon style= color: 'red'  />
</IconButton> || null 

参考:https://reactjs.org/docs/conditional-rendering.html#inline-if-with-logical--operator

【讨论】:

【参考方案2】:

详细说明斯塔克写的内容:

你可以这样使用js操作符:

(
 (user === "author" || user === "supervisor") && 
<IconButton 
   aria-label="delete" 
   onClick=() => props.pressHandler(props.id)
 >
  <DeleteIcon style= color: 'red'  />
</IconButton>
) || undefined

三元运算符和 React Fragment 同上:


(user === "author" || user === "supervisor") ?
<IconButton 
   aria-label="delete" 
   onClick=() => props.pressHandler(props.id)
 >
  <DeleteIcon style= color: 'red'  />
</IconButton> : <></>

在 false 情况下,UndefinedReact.Fragment 不会被渲染。

【讨论】:

【参考方案3】:

  ["author", "supervisor"].includes(user) ? (
    <IconButton
      aria-label="delete"
      onClick=() => props.pressHandler(props.id)
    >
      <DeleteIcon style= color: "red"  />
    </IconButton>
  ) : null;

当您使用“&&”运算符时,有时您会在应用程序上看到“假”文本。 null 将是不显示任何内容的绝佳选择,或者使用可以将与普通用户的删除按钮不同的内容设置为 null。

【讨论】:

以上是关于jsx: ReactJS if 条件的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS学习笔记-条件判断的几种形式

ReactJS学习笔记-条件判断的几种形式

意外的关键字'this'reactjs jsx [重复]

使用 .js 和 .jsx 作为 Reactjs 的文件结尾有啥区别? [复制]

ReactJS实用技巧: JSX与HTML的那些不同

带有 JSX 和类的 ReactJS 'Hello World' 不会向浏览器打印任何内容