2016-04-26 13 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

実際には、最初の1つはheheを働いていない – Buzinas

答えて

1

これは有効な構文であり、正常に動作しますが、いくつかのことを解決するのに役立ちます。あなたがブールを使用するブール値として何かを使用することを計画したときにまず、私が推薦する

がある()

第二に、私はあなたの代わりにrenderメソッドに空の文字列のnullを返すお勧めします。

第3に、ES6矢印関数の構文を使用しているため、文字列にテンプレートリテラルを使用できます。

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

コードを掃除するためのヒントをありがとう。しかし、あなたが提案する理由は何ですか? 'Boolean()'を使う利点は? 'null'を使う利点は?そして、なぜ「純粋なJSX」が短い場合にES6テンプレート文字列を使用するのですか? – EricC

+0

さらにもう一つ: '&&'を使用しているのは、おそらくternaryを使うよりも良いでしょうか? 'Boolean(data)&& dataDiv' – EricC

+0

テンプレート文字列は、自動作成する反応する複数のspan要素を防ぐことができます。ブール型チェックを保証する場合は、ブール値を使用することをお勧めします。 nullは反応の好ましいデフォルトです –