2017-02-01 3 views
0

Ich benutze Meteor mit reagieren.Verwendung von 'const' in Reaktionsklassen (und Meteor)

In einer Klasse Komponente, ich habe folgendes:

const Media = (props) => { 
    ... 
} 

Aber das funktioniert nicht und ich sehe nicht, warum. Ich habe einen Buildfehler in der ersten Zeile:

Unexpected token, expected (

Es scheint, ich nicht „const“ in meiner Klasse verwenden kann. Ich kann keine zustandslosen Komponenten definieren. Danke für Ihre Hilfe!


Eine kleine Nebenbefund:

Wenn ich eine Komponente bin definieren wie folgt:

import React from 'react'; 

const Test =() => { 
    return (<img src=".." />); 
} 

export default Test; 

Dann kann ich die Komponente importieren und alles funktioniert.

Nun, wenn ich eine verschachtelte "Komponente" habe wie folgt: importieren Reagieren von 'reagieren';

class Test extends React.Component { 

    const Test =() => { 
    return (<img src=".." />); 
    } 

    render(){ 
    return(<img src=".." />) 
    } 

} 

export default Test; 

Dann habe ich den Fehler auf der "const" -Linie. Ist das etwas, das nicht getan werden kann? Ich habe verschiedene Codebeispiele mit solchen Strukturen gesehen.

+0

Ich habe das Meteor Ecmascript und es5-shim-Paket installiert. Ich weiß nicht, ob ich etwas Zusätzliches machen muss. – user3900157

+0

Ich benutze Meteor 1.4: "Ab Meteor 1.3 ist JSX und ES2015 + in das Kern-Ecmascript-Paket integriert, das standardmäßig in allen Apps installiert ist. So können Sie alle JavaScript-Funktionen verwenden, die Sie sofort lieben keine Konfiguration. ". Was muss ich noch tun? – user3900157

Antwort

1

Beide sind möglich:

const Media = (props) => (
    <div> 
    ... 
    </div> 
) 

const Media = (props) => { 
    <div> 
    ... 
    </div> 
} 

Die erste der div zurück, und die spätere nicht.

var Media = function Media(props) { 
    return React.createElement(
    "div", 
    null, 
    "..." 
); 
}; 

var Media = function Media(props) { 
    React.createElement(
    "div", 
    null, 
    "..." 
); 
}; 

Vielleicht ist der Fehler woanders im Code.


Normalerweise können Sie den Fehler wie folgt erstellen, wenn Sie schreiben:

const Media = { a, b, c} => { return a + b + c }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

, wo Sie() für die Parameter links.


Nach Ihrer Rückmeldung habe ich das Problem verstanden. In ES6 ist es nicht möglich, Variablen innerhalb der class zu definieren. Nur Methoden wären möglich.

Technisch, wenn Sie schreiben const, var, let in einem class Sie einen Variablennamen definieren, obwohl ich weiß, Sie haben versucht, die Funktion zu erstellen. Wenn Sie ES7 verwenden, können Sie innerhalb der classstatic und nicht statische Eigenschaften problemlos definieren.

Verwenden Sie das Schlüsselwort static und ohne ein Schlüsselwort, um Variablen zu definieren.

Der nächste, den ich fand, war in here.

+0

Danke, ich benutze React.Component. Kompletter Code ist ungefähr so: 'Klasse AddPage erweitert React.Component {const Media = (Requisiten) => {..}}' – user3900157

+0

Bitte editieren Sie Ihre ursprüngliche Quest @ user3900157 – prosti

+0

Ich nehme an, Sie haben 'create-react-app' @ user3900157 – prosti

Verwandte Themen