在 React 中条件渲染 JSX 的 4 种方法

2025-06-07

在 React 中条件渲染 JSX 的 4 种方法

在 React 中,条件渲染 JSX 是一项非常常见且必不可少的功能。在 React 中,我们可以通过 4 种方式条件渲染 JSX:

  1. 三元运算符

  2. 逻辑运算符

  3. 如果,否则,否则如果

  4. Switch 语句

 

一般来说,开发者不会在 JSX 中使用if elseor来进行条件渲染。因为ororswitch statement需要更多代码行。但是,当你需要处理两个以上的条件时,就必须使用or 了if elseswitch statementternary operatorlogical operatorif elseswitch statement

 

三元运算符

 

function TernaryOperator() {

  return (
    <>     
        {
            /* Ternary Operator */

            'a'==='a' ? <p>Hi</p> : <p>Bye</p>
        } 
    </>
  )

}

export default TernaryOperator

Enter fullscreen mode Exit fullscreen mode

解释

只有当条件'a'==='a'为真时,<p>Hi</p>才会在屏幕上渲染。否则,<p>Bye</p>才会在屏幕上渲染。

 

笔记:

这不是一个很现实的例子,因为'a'==='a'在实际应用中你永远不会进行比较。但这种比较并不是这里的重点。重点是三元运算符的用法。

 

逻辑运算符

 

AND &&(逻辑运算符)

 

function LogicalAnd() {

  return (
    <>     
        {
            /* Logical 'AND' Operator*/

            'a'==='a' && <p>Hi</p>
        } 
    </>
)

}

export default LogicalAnd
)
Enter fullscreen mode Exit fullscreen mode

解释

只有当条件'a'==='a'为真时,<p>Hi</p>才会在屏幕上渲染。

 

OR ||(逻辑运算符)

 

function LogicalOR({name, labelText}) {

  return (
    <>       
        /* Logical 'OR' Operator*/
         {labelText || name}      
    </>
  )
}

export default LogicalOR
Enter fullscreen mode Exit fullscreen mode

解释:

如果将labelTextname两个 prop 传入此组件,labelText则会在屏幕上渲染。但如果只传递其中一个(namelabelText)作为 prop,则传递的 prop 将会被渲染到屏幕上。

 

NOT !(逻辑运算符)

 


function LogicalNOT ({name})  { 

    /* Logical NOT Operator */
    if (!name) {  
      return null; 
    }              


    return <p>Hi! My name is {name}.</p>;
  }

 export default LogicalNOT

Enter fullscreen mode Exit fullscreen mode

解释

只有name传递了该 prop<p>Hi! My name is {name}.</p>才会在屏幕上渲染,否则屏幕上不会渲染任何内容。

 

笔记

if (!name) { return null },像这样提前返回被称为Early ReturnEarly Return也称为Guard ClauseBouncer Pattern

 

如果,否则,否则如果

 

function IfElse() {

    return ( 
      <>     
          {
            /*If else condition within an anonymous function*/

              (() => {
                  if('a'==='b') {
                          return (
                              <p>Hi</p>
                          )
                      } else if ('b'==='b') {
                          return (
                          <p>Hello</p>
                          )
                      } else {
                          return (
                              <p>Bye</p>
                          )
                      }
              })()  
          }  
      </>  
    )


}

export default IfElse
Enter fullscreen mode Exit fullscreen mode

笔记:

必须使用匿名函数(还需要立即调用该函数)

 

Switch 语句

 

function SwitchStatement() {

  return ( 
    <>     
        {

           /*Switch Statement within an anonymous function*/

            (() => {
                switch(true) {

                    case('a'==='b'): {
                            return (
                                <p>Hello</p>
                            )
                        }
                    break;

                    case('a'==='a'): {
                        return (
                            <p>Hi</p>
                        )
                    }
                    break;

                    default: {
                            return (
                                <p>Bye</p>
                            )
                        }
                    break;
                    }
            })()  
        }  
    </>  
)

}

export default SwitchStatement
Enter fullscreen mode Exit fullscreen mode

笔记:

必须使用匿名函数(还需要立即调用该函数)

 

就是这样。😃 感谢阅读。🎉

文章来源:https://dev.to/rasaf_ibrahim/4-ways-to-render-jsx-conditionally-in-react-2bal
PREV
React 自定义 Hooks 指南
NEXT
我推出了一款免费的拖放式仪表盘生成器