2016-04-26 31 views
0

該組件呈現很好:如何使用變量/道具三元操作

const Footer =() => { 
    let dataDiv = <div>Data is: Some data</div>; 
    return (
    <div> 
     {data ? dataDiv : ''} 
    </div> 
) 
} 

但如果我更改文本「一些數據」與變量,那裏面dataDiv的HTML通常不會呈現,但作爲純文本:

const Footer =() => { 
    let data = 'Some data'; 
    let dataDiv = <div>Data is: {data}</div>; 
    return (
    <div> 
     {data ? dataDiv : ''} 
    </div> 
) 
} 

我有我要顯示或取決於它是否存在或無法掩蓋許多不同的數據的屬性,我怎麼能解決這個問題,在一個很好的方式作出反應?

+0

我剛剛測試了你的2º代碼,它工作正常,您使用的是什麼版本的React? – QoP

+0

我只是測試一下,一切正常。我爲它做了一個小提琴:https://jsfiddle.net/reactjs/69z2wepo/ – winhowes

+0

其實,第一個不工作嘿嘿 – Buzinas

回答

1

這是有效的語法和工作正常,但有一些事情來幫助清理它。

首先,我建議是當你打算使用的東西作爲一個布爾值使用布爾()

其次,我建議你返回null,而不是在渲染方法一個空字符串。

第三,由於您使用的是ES6箭頭函數語法,因此可以使用字符串的模板文字。

const Footer =() => { 
    let data = 'Some data'; 
    let dataDiv = <div>`Data is: ${data}`</div>; 
    return (
    <div> 
     {Boolean(data) ? dataDiv : null} 
    </div> 
) 
} 
+0

感謝您提供清理代碼的提示。但是,你建議的理由是什麼?使用布爾()的優點?使用'null'的好處?爲什麼在「純JSX」更短時使用ES6模板字符串? – EricC

+0

還有一件事:使用'&&'也許比使用三元組更好? '布爾(數據)&& dataDiv' – EricC

+0

模板字符串可以防止多個自動創建的span元素髮生反應。在確保布爾類型檢查時,布爾是首選和最佳實踐。而null是反應首選的默認值 –