2016-02-27 16 views
15

Ich habe folgende ReactJS Klasse:Rufen Sie eine statische Funktion in die Klasse Reagieren ES6

import React from 'react' 

export class Content extends React.Component { 

    static getValue(key) { 
    return key 
    } 

    render() { 
    let value = this.getValue(this.props.valueKey); 
    return <span dangerouslySetInnerHTML={{__html: value}} /> 
    } 
} 

Aber ich habe die folgende Fehlermeldung:

TypeError: this.getValue is not a function 

Ich verstehe nicht. Ist das der gute Weg, eine statische Funktion zu nennen? Ich denke, reagieren tut etwas mit Statik, aber ich weiß nicht was.

+0

* "ist es der gute Weg, eine statische Funktion aufzurufen?" * Da es nicht funktioniert, wahrscheinlich nicht: P –

Antwort

23

Auf eine statische Methode muss in der Klasse zugegriffen werden, nicht auf eine Instanz. Also in Ihrem Fall verwenden:

Content.getValue()

jedoch eine statische Methode nicht in der Lage sein this zugreifen - ich glaube nicht, dass Sie die Methode wollen oben statisch sein, basierend auf Ihre Codebeispiel.

Mehr: Static Members in ES6

+0

Die Funktion 'getValue' selbst ist statisch - also kann sie mit this.constructor.getValue aufgerufen werden (params) ... Ich benutze diese Methode oft in meinem Code. Ich sehe keinen Grund dafür, dass diese Funktion nicht statisch ist, es sei denn, "dieses" muss innerhalb der Funktion aufgerufen werden. – Sprose

7

Sie innerhalb der Klasse als this.constructor.getValue zugreifen können.

Edit: Ich habe eine JSFiddle here hinzugefügt. Die einzige Änderung, die ich vorgenommen habe, war das Hinzufügen des Funktionsaufrufs aus dem Konstruktor und das Entfernen des gefährlich gesetzten innerenHTML - Wie Sie sehen, können Sie von diesem.constructor aus auf den getValue -Static zugreifen und funktionieren problemlos.

+0

Nicht mit 'React.Component' – Ajouve

+1

Falsch - Sie können. Vertrau mir dieses mal. Ich füge ein JSBin hinzu –

Verwandte Themen