JSX
JSX ist eine deklarative Syntax, um zu beschreiben, wie eine Komponente aussieht und wie sie funktioniert. Das heisst Komponenten müssen einen Block JSX zurückgeben.
const Question = ({ question }: QuestionProps) => {
const [upVotes, setUpVotes] = useState(0);
const upVote = () => setUpVotes((v) => v + 1);
return (
<div>
<h4>{question.title}</h4>
<p>{question.text}</p>
<p>{question.hours} hours ago</p>
<UpvoteBtn onClick={upVote} />
<Answers
numAnswers={question.num}
/>
</div>
);
}
export default Question;
JSX ist eine Erweiterung von JavaScript, die es uns erlaubt JavaScript, CSS und React-Komponenten in ein HTML-Template zu schreiben.
Umwandlung
JSX wird, wenn wir es kompilieren, in normalen JavaScript-Code umgewandelt mit einem Tool namens Babel.
<header>
<h1 style="color: red">
Hello React!
</h1>
</header>
Regeln
Generelle Regeln
JSX funktioniert eigentlich wie HTML, aber wir können in den "JavaScript-Mode" mit
{}
gehen (für Text oder Attribute)Wir können ganze JavaScript-Expressions in den
{}
schreiben, z.B. um Variablen zu referenzieren, Arrays oder Objekte zu erstellen und die.map()
-Methode, den Ternary-Operator, etc. nutzenStatements sind nicht erlaubt, z.B.
if/else
,for
undswitch
Ein Stück JSX darf nur ein Root-Element beinhalten. Wenn man mehr braucht, sollte man
<>
benutzen
Unterschiede: JSX vs. HTML
className
anstatt HTML'sclass
htmlFor
anstatt HTML'sfor
Jeder Tag muss geschlossen werden, z.B.
<img />
oder<br />
Alle Event-Handler und andere Properties müssen in camelCase sein, z.B.
onClick
oderonMouseOver
Ausnahme:
aria-*
unddata-*
werden mit-
wie in HTML geschrieben
CSS Inline Styles werden wie folgt geschrieben:
{{<style>}}
CSS-Attributnamen werden ebenfalls im camelCase geschrieben
Kommentare müssen in
{}
sein
Zuletzt aktualisiert