2016-04-17 14 views
1

Ich möchte wissen, was die beste Praxis für eine Kommunikation zwischen Eltern/Kind-Komponenten ist. Ich habe diese blogpost über Kommunikation und Komponenten gelesen, aber habe nicht die richtige Antwort für mein Problem gefunden.Datenmodell in untergeordnete Komponente

Folgende Komponenten werden berücksichtigt. Meine übergeordnete Komponente ist eine Liste, die mehrere Aufgaben (untergeordnete Komponente) von Objekten in der übergeordneten Komponente rendert.

Also meine Fragen sind:

  1. ist es am beste Praxis, das Objekt zu jeder Aufgabe Komponente zu übergeben?
  2. Wenn ein Wert in der Task-Komponente geändert wurde, wie weiß die Elternkomponente darüber? Weil die Eltern über die Informationen aller Kinder Bescheid wissen sollten.

Also ist das ein richtiges Muster zu verwenden?

In meinem Elternkomponente habe ich dies in der Render-Funktion:

<Task key={index} taskdata={taskobj} /> 

Meine Aufgabe Kind Komponente wie folgt aussieht:

render() { 
    return (
     <input type="text" name="wunsch" defaultValue={this.props.task.title}/> 
); 
} 

Also, wenn der Wert des Eingabefeldes wird sich ändern, tut Taskobj in der übergeordneten Komponente auch ändern? In diesem Beispiel Nr. Aber was wäre das richtige Muster hier?

+0

Können Sie ein Codebeispiel für Ihr Problem bereitstellen? – iofjuupasli

Antwort

1

Grundsätzlich, wenn Sie wollen von den Eltern Sie props verwenden, um Kinder Informationen weitergeben, wenn Sie Informationen von Kind zu Eltern übergeben wollen übergeben Sie eine Funktion, um ein Kind als prop und dann anrufen, wenn Sie einen Elternteil aktualisieren .

können Sie mehr in official docs

Lesen Sie auch Sie Reflux einen Blick darauf werfen können. Eine einfache Bibliothek für unidirektionale Datenfluss-Architektur inspiriert von ReactJS Flux

+0

Gibt es eine Möglichkeit, dass die Informationen in der übergeordneten Komponente automatisch aktualisiert werden, wenn sich die Kindinformationen geändert haben? Wie der "staatliche" Mechanismus? – JGM

+0

Ein wichtiges React-Konzept ist die Bereitstellung einer Einweg-Datenflussarchitektur. Sie können einige Bibliotheken verwenden, um Zweiwege-Bindungen zu erstellen. Ich würde empfehlen, einen Blick auf https://github.com/reflux/refluxjs zu werfen. Sie können eine Aktion erstellen und so viele Komponenten für diese Aktion abonnieren, dass alle aktualisiert werden, wenn Sie diese Aktion aufrufen. –

1

In Reaktion, fließen Daten einen Weg

Ich war nicht wirklich bewusst, dieses Konzept reagieren. Also nach dem Lesen dieser link in der ReactJS Doc entschied ich mich für die onChange/setState() Weg, da ReactLink bereits veraltet ist.

Wenn also eine Änderung im Modell in der Child-Komponente passiert, rufe ich eine Methode in der Eltern-Komponente auf, um meine Daten zu aktualisieren (setState).