美文网首页
jsx(4)-条件渲染

jsx(4)-条件渲染

作者: 未路过 | 来源:发表于2022-11-08 08:31 被阅读0次

    条件渲染


    image.png
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>计数器</title>
    </head>
    <body>
      
      <div id="root"></div>
    
      <script src="../lib/react.js"></script>
      <script src="../lib/react-dom.js"></script>
      <script src="../lib/babel.js"></script>
    
      <script type="text/babel">
        // 1.定义App根组件
        class App extends React.Component {
          constructor() {
            super()
            this.state = {
              message: "Hello World",
    
              isReady: false,
    
              friend: undefined
            }
          }
    
          render() {
            const { isReady, friend } = this.state
    
            // 1.条件判断方式一: 使用if进行条件判断
            let showElement = null
            if (isReady) {
              showElement = <h2>准备开始比赛吧</h2>
            } else {
              showElement = <h1>请提前做好准备!</h1>
            }
    
            return (
              <div>
                {/* 1.方式一: 根据条件给变量赋值不同的内容 */}
                <div>{showElement}</div>
    
                {/* 2.方式二: 三元运算符 */}
                <div>{ isReady ? <button>开始战斗!</button>: <h3>赶紧准备</h3> }</div>
    
                {/* 3.方式三: &&逻辑与运算 */}
                {/* 场景: 当某一个值, 有可能为undefined时, 使用&&进行条件判断 */}
                <div>{ friend && <div>{friend.name + " " + friend.desc}</div> }</div>
              </div>
            )
          }
        }
    
        // 2.创建root并且渲染App组件
        const root = ReactDOM.createRoot(document.querySelector("#root"))
        root.render(<App/>)
      </script>
    
    </body>
    </html>
    

    还有一个可选链。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>计数器</title>
    </head>
    <body>
      
      <div id="root"></div>
    
      <script src="../lib/react.js"></script>
      <script src="../lib/react-dom.js"></script>
      <script src="../lib/babel.js"></script>
    
      <script type="text/babel">
        // 1.定义App根组件
        class App extends React.Component {
          constructor() {
            super()
            this.state = {
              message: "Hello World",
              isShow: true
            }
          }
    
          changeShow() {
            this.setState({ isShow: !this.state.isShow })
          }
    
          render() {
            const { message, isShow } = this.state
    
            // let showElement = null
            // if (isShow) {
            //   showElement = <h2>{message}</h2>
            // }
    
            return (
              <div>
                <button onClick={() => this.changeShow()}>切换</button>
                { isShow && <h2>{message}</h2> }
    
                {/* v-show的效果 */}
                <h2 style={{display: isShow ? 'block': 'none'}}>哈哈哈哈</h2>
              </div>
            )
          }
        }
    
        // 2.创建root并且渲染App组件
        new App()
        const root = ReactDOM.createRoot(document.querySelector("#root"))
        root.render(<App/>)
      </script>
    
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:jsx(4)-条件渲染

          本文链接:https://www.haomeiwen.com/subject/dujvtdtx.html