JSX 中内联条件渲染的方法

与运算符 &&

经过花括号包裹代码,你能够在 JSX 中嵌入任何表达式。这也包括 JavaScript 中的逻辑与 (&&) 运算符。它能够很方便地进行元素的条件渲染。express

function Mailbox(props) {
  const unreadMessages = props.unreadMessages;
  return (
    <div>
      <h1>Hello!</h1>
      {unreadMessages.length > 0 &&
        <h2>
          You have {unreadMessages.length} unread messages.
        </h2>
      }
    </div>
  );
}

const messages = ['React', 'Re: React', 'Re:Re: React'];
ReactDOM.render(
  <Mailbox unreadMessages={messages} />,
  document.getElementById('root')
);

之因此能这样作,是由于在 JavaScript 中,true && expression 老是会返回 expression, 而 false && expression 老是会返回 falsethis

所以,若是条件是 true&& 右侧的元素就会被渲染,若是是 false,React 会忽略并跳过它。spa

 

三目运算符

另外一种内联条件渲染的方法是使用 JavaScript 中的三目运算符 condition ? true : falsecode

在下面这个示例中,咱们用它来条件渲染一小段文本blog

render() {
  const isLoggedIn = this.state.isLoggedIn;
  return (
    <div>
      The user is <b>{isLoggedIn ? 'currently' : 'not'}</b> logged in.
    </div>
  );
}

一样的,它也能够用于较为复杂的表达式中,虽然看起来不是很直观:ip

render() {
  const isLoggedIn = this.state.isLoggedIn;
  return (
    <div>
      {isLoggedIn
        ? <LogoutButton onClick={this.handleLogoutClick} />
        : <LoginButton onClick={this.handleLoginClick} />
      }
    </div>
  );
}

if...else...语句

function Greeting(props) {
  const isLoggedIn = props.isLoggedIn;
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

ReactDOM.render(
  // Try changing to isLoggedIn={true}:
  <Greeting isLoggedIn={false} />,
  document.getElementById('root')
);
相关文章
相关标签/搜索