JSX (JavaScript)
JSX | |
---|---|
constelement=<h1>HalloWelt!</h1>; | |
Basisdaten | |
Erscheinungsjahr: | 2013[1] |
Beeinflusst von: | JavaScript, HTML |
facebook.github.io/jsx/ |
JSX (JavaScript Syntax Extension oder gelegentlich JavaScript XML) ist eine Syntax-Erweiterung für JavaScript (Syntaktischer Zucker).[2] JSX wurde für das Framework React entwickelt und wird als Auszeichnungssprache für Komponenten verwendet.
Syntax
[Bearbeiten | Quelltext bearbeiten ]JSX ist in seiner Syntax ähnlich zu Hypertext Markup Language, wie das folgende Beispiel zeigt:[3]
constuser="Max Mustermann"; constelement=( <div> <h1className="greeting">Hallo,{user}</h1> <ahref="https://www.reactjs.org">link</a> </div> );
Beim Übersetzen von JSX wird daraus der folgende React-JavaScript-Code mit erzeugt:[4]
constuser="Max Mustermann"; constelement=React.createElement("div",{},[ React.createElement("h1",{className:"greeting"},["Hallo, ",user]), React.createElement("a",{href:"https://www.reactjs.org"},["link"]) ]);
Der folgende Beispielcode zeigt, wie man JSX in React mittels ReactDOM.render()
einbetten kann.[5] [6] [7]
constname='Max Mustermann'; constelement=<h1>Hallo,{name}</h1>; ReactDOM.render( element, document.getElementById('root') );
Attribute
[Bearbeiten | Quelltext bearbeiten ]Man benutzt meistens Anführungszeichen um string-Literale als Attribute zu verwenden:
constelement=<ahref="https://www.wikipedia.org">link</a>;
Ebenfalls kann man geschweifte Klammern verwenden, um JavaScript-Ausdrücke in ein Attribut einzubinden:
constelement=<imgsrc={user.avatarUrl}></img>;
Sicherheit (XSS)
[Bearbeiten | Quelltext bearbeiten ]JSX verhindert Injection-Attacken wie Cross-Site-Scripting (XSS). Es ist sicher, Benutzereingaben wie diese einzubetten:
consttitle=response.potentiallyMaliciousInput; // Dies ist sicher: constelement=<h1>{title}</h1>;
Standardmäßig entschlüsselt React DOM alle in JSX eingebetteten Werte, bevor sie gerendert werden. Alles wird in eine Zeichenkette konvertiert, bevor es gerendert wird.[8]
Props in JSX
[Bearbeiten | Quelltext bearbeiten ]
Man kann einen beliebigen JavaScript-Ausdruck als Prop übergeben, indem man ihn mit {}
umgibt. Zum Beispiel in diesem Code:
<MyComponentfoo={1+2+3+4}/>
Für MyComponent
wird der Wert von props.foo
10 sein, weil der Ausdruck 1 + 2 + 3 + 4 ausgewertet wird.
if-Anweisungen und for-Schleifen sind in JavaScript keine Ausdrücke (sondern Anweisungen), daher können sie in JSX nicht direkt verwendet werden.[9] [10]
Vue
[Bearbeiten | Quelltext bearbeiten ]Das Framework Vue.js verwendet eine eigene Auszeichnungssprache, kann aber auf Wunsch mit JSX verwendet werden.[11]
TSX
[Bearbeiten | Quelltext bearbeiten ]Zur Verwendung von JSX mit TypeScript wird die Dateierweiterung .tsx
verwendet.[12]
Siehe auch
[Bearbeiten | Quelltext bearbeiten ]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten ]- ↑ web.archive.org.
- ↑ Einführung in JSX – React. Abgerufen am 10. Juni 2022 (englisch).
- ↑ JSX. In: facebook.github.io/jsx. 4. August 2022, abgerufen im Dezember 2022 (englisch).
- ↑
React.createElement
- ↑ t3n – digital pioneers | Was ist JSX und wofür braucht man das? Abgerufen am 10. Juni 2022.
- ↑ What is JSX? How to use JavaScript with React? – Let's React. Abgerufen am 10. Juni 2022 (amerikanisches Englisch).
- ↑ Einführung in JSX – React. Abgerufen am 10. Juni 2022 (englisch).
- ↑ What is JSX and why to use it? Abgerufen am 10. Juni 2022 (englisch).
- ↑ Components and Props – React. Abgerufen am 10. Juni 2022 (englisch).
- ↑ JSX In Depth – React. Abgerufen am 10. Juni 2022 (englisch).
- ↑ Render Functions & JSX. In: Vue.js. Abgerufen im Dezember 2022 (englisch).
- ↑ JSX. In: TypeScript Handbook. Abgerufen im Dezember 2022 (englisch).