2017-02-13 3 views
0

Wenn ich dies läuft es gibt mir eine Fehlermeldung:Syntaxerror: 'super' Schlüsselwort unerwartet hier

Uncaught SyntaxError: 'super' keyword unexpected here

var React = require("react"); 

module.exports = React.createClass({ 
    constructor(){ 
     super(); 
     this.state = {date: new Date()}; 
    }, 
    render() { 
     return(
      <div> 
       test 
      </div> 
     ); 
    } 
}); 

PS. Ich entfernte super() es gab mir einen Fehler

You are attempting to define constructor on your component more than once. This conflict may be due to a mixin.

Beispiel von React Docs ist

Was mache ich falsch?

+1

Sie verwenden 'React.createClass'. Wenn Sie 'constructor()' verwenden möchten, müssen Sie Ihre Syntax wie die Dokumente in die ES6-Klassendefinition umwandeln. In Ihrem Fall: 'module.exports = Klasse MyComponent erweitert React.Component {'. – mrlew

+1

'Super' ist nur für ES6' class's, nicht für 'React.createClass'. – Bergi

+0

@mrlew Danke, es hat mein Problem gelöst – hasan

Antwort

1

Wenn Sie nicht ES6 Klassen verwenden, aber die React.createClass() Syntax, stellen Sie den Ausgangszustand über getInitialState(), nicht über einen Konstruktor:

var Counter = React.createClass({ 
    getInitialState: function() { 
    return {count: this.props.initialCount}; 
    }, 
    // ... 
}); 

More info in the React docs


Das heißt, es wäre Best Practice, um stattdessen zu ES6-Klassen zu wechseln. Auf diese Weise können Sie die Konstruktorsyntax aus den Dokumenten verwenden.

+0

Danke. Du hast recht, besser auf ES6 umzusteigen – hasan

Verwandte Themen