2017-11-13 13 views
2

Gibt es eine Möglichkeit, die Funktionen einer Reaktionsklasse in einer separaten Datei zu speichern und dann diese Funktionen zur Verwendung zu importieren? Der Grund dafür wäre, die Größe meiner Komponente zu reduzieren und Funktionen nach Kategorien zu gruppieren.Speichern von React-Class-Funktionen in separaten Dateien

Zum Beispiel:

import functionIWantToImport from '../functions/functionIWantToImport'; 
import anotherFunction from '../functions/anotherFunction'; 

Class Test extends React.Component { 
    constructor(props){ 
     super(props); 

     this.state = {}; 
    } 

    //and then include the functions like below: 
    functionIWantToImport; 
    anotherFunction; 
} 

Ich weiß, dass ich diese Funktionen mit Helfern tun kann, den Teil der Komponentenklasse Arent. Aber ich möchte es mit meinen Komponentenfunktionen machen, um Platz zu sparen, und meinen Code aufräumen.

+0

natürlich können Sie, Sie müssen nur sicherstellen, dass Sie halten der Umfang und Kontext von Variablen und das 'This' in einer Weise, die keine Fehler erzeugt. Zum Beispiel hat eine externe Pfeilfunktion einen anderen "diesen" Kontext als die "Klasse". Hast du es versucht und einige Probleme entdeckt? –

Antwort

3

Verwenden Sie Standard-JS-Funktionen (nicht Funktionen Pfeil), und binden die Funktion auf die Instanz im Konstruktor:

function externalMethod() { // simulates imported function 
 
    return this.state.example; 
 
} 
 

 
class Test extends React.Component { 
 
    constructor(props){ 
 
     super(props); 
 

 
     this.state = { example: 'example' }; 
 
     
 
     this.externalMethod = externalMethod.bind(this); 
 
    } 
 

 
    render() {  
 
    return (
 
     <div>{ this.externalMethod() }</div> 
 
    ); 
 
    } 
 
} 
 

 
ReactDOM.render(
 
    <Test />, 
 
    test 
 
);
<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> 
 
<div id="test"></div>

+0

Danke. mit Standardfunktionen und Bindung an den Konstruktor funktioniert. – NCal

+0

@NCal - willkommen :) –

Verwandte Themen