2016-07-22 11 views
0

ich eine Ausgabe return() zwei Anzeige zwei const mit Zahlen als Werte mit erstellen:Wie var im Gegenzug nennen()

return (
    <div> 
    <span>{const_one}</span> {const_two} 
    </div> 
) 

Wenn einem zufälligen boolean var statement = true I ausgegeben werden soll

return (
    <div> 
    {const_one} 
    </div> 
) 

Immer wenn ich if() Funktionen in meinem return() benutze, erhalte ich einen Fehler. Wie kann ich das erreichen? Ich habe versucht, einen const Überprüfung der Staat zu schaffen und eine weitere const zu erstellen, die die Ausgabe enthält:

const statement = false; 
// or 
const statement = true; 

let customOutput = '<span>{const_one}</span> {const_two}'; 

if (statement === true) customOutput = const_one; 

return (
    <div> 
    {customOutput} 
    </div> 
) 

In diesem Beispiel werden die const_one oder const_two-Tags angezeigt werden als HTML-Text, statt zeigen ihre Werte (die Zahlen sind eigentlich):

<span>{const_one}</span> {const_two} anstelle von <span>24</span> 36.

Wie kann ich das Markup ändern innerhalb von {customOutput}

Antwort

2

Sie die const Werte anzuzeigen, die ternäre Operator für diese verwenden:

return (
    <div> 
    {statement 
     ? const_one 
     : <span><span>{const_one}</span> {const_two}</span>} 
    </div> 
); 
+0

Gibt es einen Syntaxfehler in Ihrem Code? Ich habe einen Fehler bekommen, als ich es in meinen komplexeren Code übernommen habe: 'Parsing error: unexpected token'. Es ist so geschrieben: '{pastDate ? Daten : {item.teams && (item.teams.length)}/ {Daten}} ' –

+0

Es funktioniert, wenn Sie die gesamte Zeile in einem Span umwickeln, wie Sie in Ihrem Beispiel getan haben. Warum ist das der Fall, da die ganze Aussage in ein "div" gehüllt ist und "const_one" funktioniert, ohne dass es umhüllt ist? –

+0

Das ist eine Einschränkung von JSX. Wie Sie vielleicht wissen, muss JSX zu 'React.createElement'-Aufrufen kompiliert werden, bevor der Browser es ausführen kann. Wenn Sie den äußeren Bereich entfernen, enthält der resultierende JavaScript-Code einen Fehler. Sie können ein wenig mehr darüber lesen: https://facebook.github.io/react/docs/jsx-in-depth.html – amann