Skip to content

React条件渲染

某些情况下,界面的内容会根据不同的情况显示不同的内容,或者决定时候渲染某部分内容

  • 在vue中,我们会通过指令来控制:比如v-if,v-show
  • 在react中,所有的条件判断都和普通的JavaScript代码一致

条件判断方式一:使用if进行条件判断

  • 适合逻辑比较多的情况
js
    <script type="text/babel">
        // 1.定义App根组件
        class App extends React.Component {
            constructor() {
                super()
                this.state = {
                    isReady: false
                }
            }
            render() {
                const { isReady } = this.state

                let showElement = null
                if (isReady) {
                    showElement = <h2>准备开始比赛吧!</h2>
                } else {
                    showElement = <h1>请提前做好准备!</h1>
                }

                return (
                    <div>
                        <div>{ showElement }</div>    
                    </div>
                )
            }
        }

        // 2.创建root并且渲染App组件
        const root = ReactDOM.createRoot(document.querySelector("#root"))
        root.render(<App/>)

    </script>

方式二:三元运算符

  • 适合逻辑比较简单的情况
js
<div>{ isReady? <button>开始战斗!</button> : <h3>赶紧准备</h3> }</div>

方式三:与运算符&&

  • 适合如果条件成立,渲染一个组件,如果条件不成立,什么内容也不渲染
js
<div>{ friend && <div>{ friend.name + ' ' + friend.desc }</div> }</div>

先判断friend是否为true,若为true,才加载后面的<div>{ friend.name + ' ' + friend.desc }</div>,若为空或undefined,则不显示这一块内容