2016-05-01 16 views
3

Ich habe ein brandneues Projekt mit React, Redux und Immutable. Ich erstelle meinen Staat, der eine stark verschachtelte unveränderliche Karte ist. An welchem ​​Punkt, wenn überhaupt, sollte ich js darauf anrufen, wenn ich seine Teile an die Requisiten der Kindkomponente weitergebe?React + Redux + Unveränderlich - wie tief sollten unveränderliche Objekte gehen?

Ich denke, es macht Sinn, es immer eine der Immutable-Klassen zu behalten (besonders in einem neuen Projekt), und ich mag die getIn-Funktionalität sehr.

Nachteil, es ist nicht klar, ob ein Objekt tief innerhalb einer Präsentationskomponente eine unveränderliche Klasse oder ein einfaches JS-Objekt ist.

+0

Untergeordnete Komponenten können auch die unveränderliche Schnittstelle verwenden. 'this.props.obj.get ('foo')' anstatt 'this.props.obj.foo'. –

Antwort

6

Ich empfehle es als Immautable den ganzen Weg nach unten.

Wenn Sie jemals anJS eines Stücks Ihres unveränderlichen Status aufrufen, bevor Sie es als Prop zu einer untergeordneten Komponente übergeben, verlieren Sie den Vorteil, dass diese untergeordnete Komponente in der Lage ist, eine einfache Referenzprüfung für diese Prop zu machen sein sollteComponentUpdate. Weitere Informationen finden Sie unter advanced performance section of the React docs.

Gibt es einen Grund, warum Sie jemals zu JS anrufen möchten? Letztendlich wirst du sowieso nur auf primitive Werte für deine UI zugreifen, also ist es einfach genug, mit get/getIn darauf zuzugreifen. Und als Bonus, diese unveränderlichen Typen kommen mit einigen handlichen Methoden.

Was die Nachteile angeht, die Sie erwähnen, wenn Sie react-immutable-proptypes verwenden, macht es einfach zu sehen/zu erzwingen, was jede Komponente erwartet. Und wenn Sie die Entscheidung treffen, unveränderlich den ganzen Weg hinunter zu gehen, gibt es sowieso nichts zu erinnern.

+0

ahh ... ja ... die Vorbilder. ausgezeichneter Punkt! Danke für die Antwort! –

Verwandte Themen