Keine der aktuellen Antworten gelten in React 16. Das Zurückgeben einer Zeichenfolge oder sogar eines Arrays von Zeichenfolgen in einer render()
-Methode ist völlig in Ordnung. Es muss keine Reaktionskomponente sein.
Ihr Problem ist ein Missverständnis, wie der JSX-Transpiler funktioniert. Alles, was Sie wirklich wissen müssen, ist, dass der JSX-Transpiler nichts tut, bis er auf etwas stößt, das er eindeutig als JSX identifizieren kann (etwa <xml />
). Ihr erstes Beispiel hat keine JSX.
JSX ist ein rekursiver Algorithmus, der zwischen JSX
Modus und JavaScript
Modus hin und her schaltet. Ein <xml />
Tag weist den Transpiler an, in den Modus JSX
zu wechseln. Im Modus JSX
wird die JSX-geschweifte Klammer-Syntax ({echo stuff}
) verwendet, um zurück in den JavaScript-Modus zu wechseln.
Sie versuchen, die geschweifte Klammer-Syntax zu verwenden, um zurück in JavaScript
Modus zu wechseln, ohne in JSX
Modus zu sein. Da Ihr erstes Beispiel kein JSX enthält, wird es vom JSX-Transpiler an den Rest des Babel-Prozesses übergeben. Die Syntax
{array[0]}
ist kein gültiges JavaScript. Babel wird denken, dass du versuchst, ein Objekt zu deklarieren.Dafür erwartet Babel entweder die Ebene Objektliteral Syntax:
{ apple: array[0] }
oder es6 Eigenschaftswert Stenografie:
{ apple } // assuming `apple` is a variable in scope
Wenn Sie wollen das 0
te Element des Arrays zu machen, nur Verwenden Sie
return array[0]
Dies ist * nicht * Core-JavaScript, es ist Reacts Jsx-Syntax. – Bergi