Zum Inhalt springen

„JSX (JavaScript)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K typografische Anführungszeichen, Kleinkram
Zeile 2: Zeile 2:


== Syntax ==
== Syntax ==
In ''JSX'' ist jedes Tag ein „[[Funktion (Programmierung)|Funktionsaufruf]]“, der ein Element erzeugt. Wenn JSX in [[React]] "übersetzt" wird, sieht das Ergebnis so aus: <syntaxhighlight lang="javascript">
In ''JSX'' ist jedes Tag ein „[[Funktion (Programmierung)|Funktionsaufruf]]“, der ein Element erzeugt. Wenn JSX in [[React]] „übersetzt“ wird, sieht das Ergebnis so aus: <syntaxhighlight lang="javascript">
function createElement(elementType, props, ...children) {}
function createElement(elementType, props, ...children) {}
</syntaxhighlight>Dies liegt daran, dass jedes Tag mit der Funktion <code>createElement()</code> ein Element erstellt.
</syntaxhighlight>Dies liegt daran, dass jedes Tag mit der Funktion <code>createElement()</code> ein Element erstellt.


Der folgende Beispielcode zeigt, wie man JSX in [[React]] einbetten kann:<syntaxhighlight lang="javascript">
Der folgende Beispielcode zeigt, wie man JSX in [[React]] einbetten kann:<syntaxhighlight lang="javascript">
Zeile 14: Zeile 14:
document.getElementById('root')
document.getElementById('root')
);
);
</syntaxhighlight>In diesem Code werden 2 Konstanten erstellt und den Zeichenfolgenwert an den [[Hypertext Markup Language|HTML-Code]] übergeben.
</syntaxhighlight>In diesem Code werden 2 Konstanten erstellt und den Zeichenfolgenwert an den [[Hypertext Markup Language|HTML-Code]] übergeben.


Danach wird <code>ReactDOM.render()</code> aufgerufen und den HTML-Code zusammen mit dem „root“-Element übergeben.<ref>{{Internetquelle |url=https://t3n.de/consent?redirecturl=%2Fnews%2Feigentlich-jsx-wofuer-das-867296%2F |titel=t3n – digital pioneers {{!}} Was ist JSX und wofür braucht man das? |sprache=de |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://www.letsreact.org/what-is-jsx/ |titel=What is JSX? How to use JavaScript with React? – Let's React |sprache=en-US |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://de.reactjs.org/docs/introducing-jsx.html |titel=Einführung in JSX – React |sprache=en |abruf=2022-06-10}}</ref>
Danach wird <code>ReactDOM.render()</code> aufgerufen und den HTML-Code zusammen mit dem „root“-Element übergeben.<ref>{{Internetquelle |url=https://t3n.de/consent?redirecturl=%2Fnews%2Feigentlich-jsx-wofuer-das-867296%2F |titel=t3n – digital pioneers {{!}} Was ist JSX und wofür braucht man das? |sprache=de |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://www.letsreact.org/what-is-jsx/ |titel=What is JSX? How to use JavaScript with React? – Let's React |sprache=en-US |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://de.reactjs.org/docs/introducing-jsx.html |titel=Einführung in JSX – React |sprache=en |abruf=2022-06-10}}</ref>
Zeile 39: Zeile 39:
</syntaxhighlight>Für <code>MyComponent</code> wird der Wert von <code>props.foo</code> 10 sein, weil der Ausdruck 1 + 2 + 3 + 4 ausgewertet wird.
</syntaxhighlight>Für <code>MyComponent</code> wird der Wert von <code>props.foo</code> 10 sein, weil der Ausdruck 1 + 2 + 3 + 4 ausgewertet wird.


''if-Anweisungen'' und ''for-Schleifen'' sind in [[JavaScript]] keine Ausdrücke, daher können sie in JSX nicht direkt verwendet werden.<ref>{{Internetquelle |url=https://reactjs.org/docs/components-and-props.html |titel=Components and Props – React |sprache=en |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://reactjs.org/docs/jsx-in-depth.html |titel=JSX In Depth – React |sprache=en |abruf=2022-06-10}}</ref>
''if-Anweisungen'' und ''for-Schleifen'' sind in [[JavaScript]] keine Ausdrücke, daher können sie in JSX nicht direkt verwendet werden.<ref>{{Internetquelle |url=https://reactjs.org/docs/components-and-props.html |titel=Components and Props – React |sprache=en |abruf=2022-06-10}}</ref><ref>{{Internetquelle |url=https://reactjs.org/docs/jsx-in-depth.html |titel=JSX In Depth – React |sprache=en |abruf=2022-06-10}}</ref>


== Siehe auch ==
== Siehe auch ==

Version vom 7. Oktober 2022, 17:01 Uhr

JSX steht für Javascript Syntax Extension oder Javascript XML und ist eine Erweiterung der gängigen Javascript-Syntax von React.[1]

Syntax

In JSX ist jedes Tag ein „Funktionsaufruf“, der ein Element erzeugt. Wenn JSX in React „übersetzt“ wird, sieht das Ergebnis so aus:

function createElement(elementType, props, ...children) {}

Dies liegt daran, dass jedes Tag mit der Funktion createElement() ein Element erstellt. Der folgende Beispielcode zeigt, wie man JSX in React einbetten kann:

const name = 'Max Mustermann';
const element = <h1>Hallo, {name}</h1>;

ReactDOM.render(
  element,
  document.getElementById('root')
);

In diesem Code werden 2 Konstanten erstellt und den Zeichenfolgenwert an den HTML-Code übergeben.

Danach wird ReactDOM.render() aufgerufen und den HTML-Code zusammen mit dem „root“-Element übergeben.[2][3][4]

Attribute

Man benutzt meistens Anführungszeichen um string-Literale als Attribute zu verwenden:

const element = <a href="https://www.wikipedia.org"> link </a>;

Ebenfalls kann man geschweifte Klammern verwenden, um JavaScript-Ausdrücke in ein Attribut einzubinden:

const element = <img src={user.avatarUrl}></img>;

Sicherheit (XSS)

JSX verhindert Injection-Attacken wie XSS. Es ist sicher, Benutzereingaben wie diese einzubetten:

const title = response.potentiallyMaliciousInput;

// Dies ist sicher:

const element = <h1>{title}</h1>;

Standardmäßig entschlüsselt React DOM alle in JSX eingebetteten Werte, bevor sie gerendert werden. Alles wird in einen String konvertiert, bevor es gerendert wird. Dies hilft, XSS-Angriffe (Cross-Site-Scripting) zu verhindern.[5]

Props in JSX

Man kann einen beliebigen JavaScript-Ausdruck als Prop übergeben, indem man ihn mit {} umgibt. Zum Beispiel in diesem Code:

<MyComponent foo={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, daher können sie in JSX nicht direkt verwendet werden.[6][7]

Siehe auch

Einzelnachweise

  1. Einführung in JSX – React. Abgerufen am 10. Juni 2022 (englisch).
  2. t3n – digital pioneers | Was ist JSX und wofür braucht man das? Abgerufen am 10. Juni 2022.
  3. What is JSX? How to use JavaScript with React? – Let's React. Abgerufen am 10. Juni 2022 (amerikanisches Englisch).
  4. Einführung in JSX – React. Abgerufen am 10. Juni 2022 (englisch).
  5. What is JSX and why to use it? Abgerufen am 10. Juni 2022 (englisch).
  6. Components and Props – React. Abgerufen am 10. Juni 2022 (englisch).
  7. JSX In Depth – React. Abgerufen am 10. Juni 2022 (englisch).