2017-09-08 1 views
0

Ich verstehe, warum wir Datenlogik von Komponente in woanders extrahieren wollen, aber warum müssen wir diese Logik in eine Container-Komponente, anstatt ein Controller-ähnliches Javascript-Objekt welches mit der Komponente verbunden ist. Dieses Objekt wird den Speicher abonnieren und die Ansicht zwingen, sich selbst zu aktualisieren, wenn sich Daten ändern. Auf diese Weise muss es nicht Teil der Ansichtsstruktur sein und nur Daten verarbeiten.Warum brauchen wir Container-Komponente in react-redux

Danke für Hilfe.

+0

Wie wird das controllerähnliche Objekt zwingen, die Ansicht zu aktualisieren? Container-Komponenten erleichtern die Datenreaktivität, indem sie auf der obersten Ebene abonnieren und die Daten als Requisiten an die untergeordneten Elemente weiterleiten. –

+0

Für verbundene Komponenten können Sie Funktionen innerhalb von 'mapStateToProps' aufrufen und Ihre Datentransformationen dort durchführen, wenn Sie möchten. –

Antwort

0

In Redux ersetzt connect die Notwendigkeit, eine explizit separate Containerkomponente zu verwenden. Im Wesentlichen haben Sie also völlig Recht, Sie müssen nicht buchstäblich eine andere Komponente erstellen, die nur die dumme Komponente darstellt.

Ich erstelle eine dumme Komponente und dann habe ich eine separate Datei, wo ich connect die Komponente, aber es gibt keine JSX oder separate Komponente in dieser Datei.

const DumbComponent = (props) => <div>{props.name}</div>; 

const ContainerComponent = connect(mapStateToProps)(DumbComponent);