2016-07-23 9 views
2

Ich bin gespannt, ob es bei Reducts mit React einen Performance-Hit gibt.Redux und Performance-Hit, wenn ich den gesamten Zustand jedes Mal beim Verbinden übergeben?

Einzelne Seite App

  1. Ich habe Hunderte von Komponenten
    • Anstatt explizit über das, was Teil des Staates Baum zu sein ich will. Ich gebe den gesamten Zustandsbaum an jede Komponente zurück, mit der ich mich verbinde.

Der Staat Baum umfasst viele Reduzierungen mit potenziell Hunderte von Datenpunkten und seichte Tiefe Datenstrukturen.

Also zum Beispiel. In meiner Schuhkomponente, die Requisiten w/Zustand sieht derzeit wie:

class Shoe extends Component{} 
// result of connect and my full load of redux state 
// this will all grow as the applications grow 
this.props.state => { 
    shoes: {}, 
    cost: {}, 
    customer: {}, 
    bikes: {}, 
    cars: {}, 
    colors: {}, 
    geo: {} 
} 

BUT, this particular component only needs shoes: 
this.props.state => { 
    shoes: {} 
} 

Am Anfang dachte ich, es ist gut, dass die Komponente alles bekommt, damit ich mich zur Verfügung stehenden alles habe ich „könnte“ Notwendigkeit. Aber als die Anwendung gewachsen und gewachsen und gewachsen ist, bin ich neugierig, ob es ein Leistungsproblem gibt, das aus buchstäblich hunderten von Komponenten resultieren könnte, die die volle Breite des Zustandsbaums erhalten, anstatt ausgewählte Teile. Natürlich reduziere ich die Möglichkeit der Mutation, bin aber hier auf Leistung neugierig.

+0

IMO - wenn Sie die Zeit nehmen, um den Staat zu gestalten, ist es ziemlich einfach zu erweitern, es besteht keine Notwendigkeit, dies zu tun. Mit redux bekommst du eine wahnsinnige Menge an Requisiten auf jeder Komponente. Ich denke nicht, dass das eine großartige Idee ist, es hört sich so an, als ob du faul mit Requisiten sein willst. Komponenten sollten ihre eigene API haben und genau daran festhalten. Das ist natürlich nur meine Meinung! Ich nehme an, Sie würden einen Leistungseinbruch nehmen, aber ich bin mir sicher, dass jemand so viel besser antworten kann als ich. – ajmajmajma

+0

Wenn Sie sagen "keine Notwendigkeit, dies zu tun .." sagst du "alles vorbei" oder? –

+0

Ja genau, warum sollten Sie 100 zusätzliche Funktionen und Objekte in einer Komponente, die API-Aufrufe wie 10-20 vielleicht ist? Nur damit Sie jederzeit auf sie zugreifen können? Wenn Sie Ihren Staat im Voraus entwerfen, wie redux docs erwähnen, sollten Sie dies nie brauchen. – ajmajmajma

Antwort

0

Ich sprach mit Dan sehr kurz über Messenger, und ja - es gibt einen Leistungstreffer.

Also, wir wollen den Zustand, den wir auf die Requisiten hinzufügen, auf das beschränken, was Sie nur brauchen.

Also, wenn ich nichts anderes höre, werde ich davon ausgehen, dass dies der richtige Weg ist.