2016-08-23 85 views

回答

4

你的

<div id={condition ? 'msg' : null}>Hello World!</div> 

JSX是不是有效的JavaScript本身,會被編譯成以下ReactJS撥打:

React.createElement(
    'div',       // Element "tag" name. 
    { id: condition ? 'msg' : null }, // Properties object. 
    'Hello World!'     // Element contents. 
); 

有效的JavaScript,隨時可以由您的Javascript運行時環境解釋/編譯。正如你所看到的,沒有辦法將if-else插入該語句中,因爲它無法編譯爲有效的Javascript。


你也可以使用一個immediately-invoked function expression,並通過內返回的值:

<div id={(function() { 
    if (condition) { 
     return "msg"; 
    } else { 
     return null; 
    } 
})()}>Hello World!</div> 

這將彙編成以下有效的JavaScript:

React.createElement(
    "div", 
    { 
     id: (function() { 
      if (condition) { 
       return "msg"; 
      } else { 
       return null; 
      } 
     })() 
    }, 
    "Hello World!" 
); 
0
// This JSX: 
<div id={if (condition) { 'msg' }}>Hello World!</div> 

// Is transformed to this JS: 
React.createElement("div", {id: if (condition) { 'msg' }}, "Hello World!"); 

所以,你看看這個模型是否適合這個模型。最好在jsx之外使用它。 可能在渲染功能。

0

if-else語句在JSX內部不起作用。這是因爲JSX只是函數調用和對象構造的語法糖。 React Docs