Ich lese Full Stack React The Complete Guide Und kam in diesem Code-Schnipsel:virtuelle DOM-Manipulation in JSX (Reagieren)
render() {
if(this.props.timerIsRunning){
return(
<div
className='ui bottom attached red basic button'
onClick={this.props.onStopClick}
>
Stop
</div>
)
} else {
return(
<div
className='ui bottom attached green basic button'
onClick={this.props.onStartClick}
>
Start
</div>
)
}
}
Es verwendet einen if-Anweisung zu bestimmen, welche durch die Komponente gerendert wird, entweder einen Anschlag oder Startknopf für eine Stoppuhr. Dieses Beispiel hat mich gefragt, ob es einen Weg gibt, dies mit weniger Platz zu machen. Gibt es eine Möglichkeit, das div zu erstellen und dann bestimmte Eigenschaften und Klassen zu diesem div hinzuzufügen, abhängig vom Wert von this.props.timerIsRunning? Ist dies nicht JSX wäre, würde ich so etwas wie dies vorschlagen:
<div id=timerbutton></div>
<script>
let timerButtonDiv = document.getElementById(timerbutton)
if(this.props.timerIsRunning) {
timerbuttonDiv.className = 'ui bottom attached red basic
button'
timerbuttonDiv.innerHTML = Stop
} else {
timerbuttonDiv.className = 'ui bottom attached green basic
button'
timerbuttonDiv.innerHTML = Start
}
</script>
Also ... lassen Sie dieses Beispiel auf meinen Mangel an JSX Verständnis sprechen, aber ich denke, ich frage mich nur, wenn (aus einem Schräg 1 .X background) gibt es ein React/JSX-Äquivalent von ng-show oder ng-class. Im weiteren Sinne frage ich mich, wo sich die Zeilen zwischen virtuellem DOM und tatsächlichem DOM befinden, was die Standard-DOM-Manipulation betrifft. Irgendwelche Ressourcen dazu, wie React JSX umsetzt, wären sicherlich hilfreich.
Dies ist eine wunderbare Antwort! Vielen Dank! Ist das $ vor dem Teil von JSX? Was heißt das? Ich mag die Verwendung von ternärer Logik. Es ist sehr sauber und ordentlich. –
Der 'className = {}' Teil ist JSX, alles innerhalb dieser Curlies ist JS, also wird in diesem Fall '$ {running? "rot": "grün"} 'ist das Ausdrucksteil eines Standard-ES6-Vorlagenliterals: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals – loganfsmyth
Ich habe herausgefunden, dass es das ist Syntax für Vorlagenliterale durch Bezugnahme auf diesen Artikel: http://stackoverflow.com/questions/27678052/what-is-the-usage-of-the-backtick-symbol-in-javascript Danke nochmal. –