2017-07-27 5 views
0

mir eine Klasse in einer Datei mit der Erklärung habe:Reagieren Mutterimportfunktion von exportierten Klasse

export default class ParticipantRow extends Component 

Innerhalb dieser Klasse habe ich eine Funktion, die ich in einer anderen Klasse importieren möchte. Gibt es sowieso ich kann eine einzelne Funktion aus einer Klasse importieren, die auf die gleiche Weise wie mein Beispiel deklariert wird, wenn ja, wie?

Die Funktion, die ich importieren möchte, wurde an den Konstruktor der ParticipantRow-Klasse gebunden. Ich möchte diese Funktion als Eventhandler in einer anderen Klasse verwenden, und wenn ich ParticipantRow.handlePressParticipant() einfach als Event-Handler in einer anderen Klasse deklariere, bekomme ich nach dem Import von ParticipantRow den folgenden Fehler: 'Undefined ist keine Funktion (Auswertung' _ParticipantRow2.default.handlePressParticipant()) '

Im Voraus, danke.

+0

Sie können nur die ganze Klasse importieren mit 'Import ParticipantRow von‘ ./ParticipantRow.js'; 'und als laufen ParticipantRow.someMethod() –

+0

migh ich nicht genau genug gewesen sein, ich Entschuldige mich, wenn das der Fall ist. Die Funktion, die ich importieren möchte, wurde an den Konstruktor der ParticipantRow-Klasse gebunden. Ich möchte diese Funktion als Eventhandler in einer anderen Klasse verwenden, und wenn ich ParticipantRow.handlePressParticipant() einfach als Event-Handler in einer anderen Klasse deklariere, erhalte ich nach dem Import von ParticipantRow den folgenden Fehler: 'Undefined ist keine Funktion (Bewertung' _ParticipantRow2 .default.handlePressParticipant()) ' – Refi

+1

Wenn Sie es als Event-Handler verwenden möchten, übergeben Sie ParticipantRow.handlePressParticipant in ohne() Es wäre leichter zu verstehen, wenn Sie Code-Beispiele aus beiden Klassen zur Verfügung stellen! –

Antwort

0

ParticipantRow ist eine Reaktionskomponente, die mit einer Klasse definiert wurde. Ich nehme an, dass sie verschiedene Methoden hat und Sie sie an eine andere Komponente (OtherComponent) übergeben möchten, um sie als Event-Handler zu verwenden. Sie könnten die Memberfunktion von ParticipantRow an andere Komponente übergeben, indem Sie reps verwenden.

class ParticipantRow extends Component { 
    constructor(props) { 
    super(props); 
    // we need to bind this before we pass it to OtherComponent 
    this.handleEvent = this.handleEvent.bind(this); 
    } 
    handleEvent(e) { 
    // do something here 
    } 
    // In here we pass handleEvent to OtherComponent 
    render() { 
    return <OtherComponent handleEvent={this.handleEvent} /> 
    } 
} 

class OtherComponent extends Component { 
    constructor(props) { 
    super(props); 
    } 
    render() { 
    return <button onPress={this.props.handleEvent} /> 
    } 
} 

Bitte nehmen Sie zu beachten, dass in diesem Beispiel andere Komponente Kind ParticipantRow ist daher, es ist ok Methode übergeben von den Eltern (ParticipantRow) auf dem Kind (andere Komponente), aber wenn Sie eine andere Anforderung haben sagt sie, Sie möchten Übergeben Sie eine Methode von ParticipantRow an eine andere Komponente, die kein untergeordnetes Element dieser Komponente ist, dann hätten Sie mehr zu tun, da Sie in diesem Fall manuell ein Ereignissystem hinzufügen oder redux ansehen müssten.

Weitere Referenz https://react-cn.github.io/react/tips/communicate-between-components.html

Verwandte Themen