2016-07-02 7 views
0

Die Funktionalität, die ich mit der statischen Funktion Syntax fehlerlos hier für Werke suchen, Ich mag die statischen Funktionen jedoch auf den Konstruktor deklariert selbst (dh className.staticFunction() => ... statt sich static staticFunction =() => ... innerhalb der Klassendefinition.Wie kann diese Funktion höherer Ordnung ohne statische Funktionen umgeschrieben werden?

Hier ist der Code ich beziehe mich auf, dass ich möchte die statischen Funktionen auf den Konstruktor/Funktion definiert verwenden, um Refactoring anstatt die static Syntax wie unten zu sehen.

const higherOrderFunction = another => andAnother => class extends Component { 

    static functionName = { 
    test: React.PropTypes.object 
    }; 

    constructor(props) { 
    super(props); 
    } 

    render() { 
    return <h1>Hello, World!</h1>; 
    } 
}; 

export default higherOrderFunction; 
+0

Wo Sie 'another' und' andAnother' verwenden? – Bergi

Antwort

1

der Wert eines class ist der gleiche wie der Konstruktor function würden Sie ohne Klassen definieren So:

const higherOrderFunction = another => andAnother => Component; 

function Component() {} 

Component.functionName =() => { 
    test: React.PropTypes.object 
}; 

Component.prototype.render =() => { 
    return <h1>Hello, World!</h1>; 
} 

export default higherOrderFunction; 

Sie sollten die Funktion und Mitglied Definitionen in dem Funktionskörper wickeln alle Argumente zu kapseln und verwenden:

const higherOrderFunction = another => andAnother => { 
    function Component() {} 

    Component.functionName =() => { 
    test: React.PropTypes.object 
    }; 

    Component.prototype.render =() => { 
    return <h1>Hello, World! {another} and {andAnother}</h1>; 
    } 

    return Component; 
}; 

export default higherOrderFunction; 
+0

Das macht Sinn, aber ich frage mich, ob es das überhaupt mit ES6-Klassen gibt. – Detuned

+0

Ja. Anstatt eine Funktion zu definieren, definieren Sie einfach eine Klasse. Sie können statische Funktionen auch später darauf anwenden. – DDS

Verwandte Themen