JSX
RunJS unterstützt die JSX-Syntax, sodass Sie Code wie React-Komponenten schreiben können. JSX wird vor der Ausführung automatisch kompiliert.
Kompilierungshinweise
- Verwendet sucrase zur Transformation von JSX.
- JSX wird in
ctx.libs.React.createElementundctx.libs.React.Fragmentkompiliert. - Kein Import von React erforderlich: Sie können JSX direkt schreiben; nach der Kompilierung wird automatisch
ctx.libs.Reactverwendet. - Wenn externes React über
ctx.importAsync('react@x.x.x')geladen wird, verwendet JSX diecreateElement-Methode dieser spezifischen Instanz.
Verwendung von integriertem React und Komponenten
RunJS enthält React und gängige UI-Bibliotheken bereits integriert. Sie können direkt über ctx.libs darauf zugreifen, ohne import zu verwenden:
- ctx.libs.React — React-Kern
- ctx.libs.ReactDOM — ReactDOM (kann bei Bedarf mit
createRootverwendet werden) - ctx.libs.antd — Ant Design-Komponenten
- ctx.libs.antdIcons — Ant Design-Icons
Wenn Sie JSX direkt schreiben, müssen Sie React nicht destrukturieren. Eine Destrukturierung aus ctx.libs ist nur erforderlich, wenn Sie Hooks (wie useState, useEffect) oder Fragments (<>...</>) verwenden:
Hinweis: Integriertes React und externes React, das über ctx.importAsync() importiert wurde, dürfen nicht gemischt werden. Wenn Sie eine externe UI-Bibliothek verwenden, muss React ebenfalls aus derselben externen Quelle importiert werden.
Verwendung von externem React und Komponenten
Beim Laden einer bestimmten Version von React und UI-Bibliotheken über ctx.importAsync() verwendet JSX diese React-Instanz:
Falls antd von react/react-dom abhängt, können Sie über deps dieselbe Version angeben, um mehrere Instanzen zu vermeiden:
Hinweis: Bei der Verwendung von externem React müssen auch UI-Bibliotheken wie antd über ctx.importAsync() importiert werden. Mischen Sie diese nicht mit ctx.libs.antd.
JSX-Syntax-Kernpunkte
- Komponenten und Props:
<Button type="primary">Text</Button> - Fragment:
<>...</>oder<React.Fragment>...</React.Fragment>(erfordert die Destrukturierung vonconst { React } = ctx.libsbei Verwendung von Fragment) - Ausdrücke: Verwenden Sie
{Ausdruck}in JSX, um Variablen oder Operationen einzufügen, wie{ctx.user.name}oder{count + 1}. Verwenden Sie keine{{ }}Template-Syntax. - Bedingtes Rendering:
{flag && <span>Inhalt</span>}oder{flag ? <A /> : <B />} - Listen-Rendering: Verwenden Sie
array.map(), um eine Liste von Elementen zurückzugeben, und stellen Sie sicher, dass jedes Element einen stabilenkeybesitzt.

