理解JSX中的条件语句

时间:2016-06-14 11:52:43

标签: javascript reactjs react-jsx

试图理解现有反应代码的一些陈述

HttpPost login = new HttpPost("https://www.Webseite.de/einloggen.html");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("loginMail", "login_name"));
nvps.add(new BasicNameValuePair("password", "login_passwort"));
login.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(login);

如何评估?

<Modal.Footer>
    { getButtons.call(this)}
    { this.props.footerLinkText && getFooterLink.call(this) }
</Modal.Footer>

我明白这是一个条件?

此代码:

this.props.footerLinkText && getFooterLink.call(this)

不确定。只需要快速解释。

2 个答案:

答案 0 :(得分:1)

二元和三元运算符

您在第一个示例中看到的是使用逻辑“AND”运算符&&的二进制短路评估表达式。 请参阅:Logical Operators - JavaScript | MDN

在第二个示例中,您使用逻辑“OR”运算符||获得一系列二进制短路评估表达式,然后使用三元运算符? {{1}进行条件评估}。 请参阅:Conditional (ternary) Operator - JavaScript | MDN

这些都不是ReactJS的原生,但它们非常适合在JSX中使用,因为它们是可以“内联”评估的表达式,而: - if之类的语句不起作用,除非放在 immediately-invoked function expression 内部或移出JSX标记。 请参阅:If-Else in JSX | React

另见:

答案 1 :(得分:1)

  

{this.props.footerLinkText&amp;&amp; getFooterLink.call(this)}

这是Short-Circuit Evaluation。这意味着如果<base href=""> 为真,则会执行this.props.footerLinkText

  

{this.props.closeBtnText || '取消'}

如果getFooterLink真实,则会返回this.props.closeBtnText。因此,将显示Cancel