在React中,你可以创建不同的组件来封装各种你需要的行为。然后还可以根据应用的状态变化只渲染其中的一部分。
React中的条件渲染和JavaScript中的一致,使用JavaScript操作符if或者条件运算符来创建表示当前状态的元素,然后让React根据它们来更新UI
先看两个组件
1 | function UserGreting(props){ |
我们将创建一个Greetin组件,它会根据用户是否来 登录来显示其中之一。
1 | function Greeting(props){ |
元素变量
你可以使用变量来存储元素,它可以帮你有条件的渲染组件的一部分,而输出的其他部分不会更改,在下面的例子中,我们将要创建一个名为LoginControl的有状态的组件。
他会根据当前的状态来渲染<LoginButton />
或<LogoutButton>
,它也将渲染前面例子中的<Greeting />
.
与运算符&&
你可以通过用花括号包裹代码在JSX中嵌入任何表达式,也包括JavaScript的逻辑与&&,它可以方便低条件渲染一个元素。
1 | function Mailbox(props){ |
在JavaScript中,true&&expression
总是返回false.因此,如果条件是true,&&
右侧的元素就会被渲染,如果是false,React会忽略并跳过它。
三目运算符
条件渲染的另一种方法是使用JavaScript的条件运算符:
1 | condition ? true : false |
下面例子中,我们用它来有条件的渲染一小段文本。
1 | render(){ |
同样它也可以用在较大得表达式中,虽然不太直观:
1 | render(){ |
阻止组件渲染
在极少数得情况下,你希望隐藏组件,即使它被其他组件渲染,让render方法返回null而不是它得渲染结果即可实现。
在下面得例子中,<WarningBanner>
根据属性warn得条件渲染,如果warn得值是false,则组件不会渲染。
1 | function WarningBanner(props){ |
组件得render方法返回null并不会影响该组件生命周期方法得回调,例如,componentWillUpdate和cmponentDidUpdate依然可以被调用。