Wenn die Requisiten für eine untergeordnete Komponente unverändert bleiben, wird sie von React noch immer gerendert?

8

Angenommen, ich habe in React die folgende Paarung von Eltern- und Kindkomponenten:

%Vor%

Wenn ich die forceUpdate mache, wird React versuchen, sie erneut zu rendern, da sich keine der Requisiten geändert hat, die an die ChildComponent übergeben wurden? Was ist, wenn ich 1000 solcher Kinder usw. habe?

Was mich beunruhigt, ist eine Situation, in der ich einen sehr tiefen ChildComponent habe, der einen ganzen massiven Baum von Nachkommen-Komponenten enthält, aber ich möchte nur einige relativ kosmetische Änderungen am ParentComponent vornehmen. Gibt es eine Möglichkeit, React dazu zu bringen, nur das übergeordnete Element zu aktualisieren, ohne zu versuchen, die untergeordneten Objekte erneut zu rendern?

    
AlexZ 06.02.2015, 08:12
quelle

1 Antwort

12

Wenn React ParentComponent erneut rendert, wird ChildComponent automatisch neu gerendert. Die einzige Möglichkeit, sich fortzubewegen, ist shouldComponentUpdate in ChildComponent zu implementieren. Sie sollten this.props.a , this.props.b und this.props.c und ChildComponents eigenen Status vergleichen, um zu entscheiden, ob das Rendern erneut durchgeführt werden soll oder nicht. Wenn Sie unveränderliche Daten verwenden, können Sie einfach den vorherigen und nächsten Zustand und die Requisiten mit strikter Gleichheit === vergleichen.

Es gibt einige Dinge, die Sie mit Ihrem Code beachten sollten

  1. Sie müssen nicht forceUpdate , wenn Sie setState . Reagiert automatisch für Sie.
  2. Sie haben wahrscheinlich gemeint:

    <ChildComponent a={this.props.a} b={this.props.b} c={this.props.c}/>

nilgun 06.02.2015, 08:30
quelle

Tags und Links