Ist es möglich, nur die neuen untergeordneten Komponenten beim React-Router-Übergang neu zu mounten?

7

Ich verwende in meiner Anwendung react-router und suche nach einer Möglichkeit, die erneute Bereitstellung von Komponenten zu stoppen, die sich bereits im DOM befinden. Zum Beispiel, wenn ich an der URL dashboard bin, dann werde ich eine assoziierte DashboardComponent gemountet haben. Wenn ich zu dashboard/settings übergehe, werden meine DashboardComponent sowie SettingsComponent erneut in das DOM eingebunden. Ich möchte eine saubere Möglichkeit finden, nur die untergeordneten Elemente der aktuellen URL zu mounten. Ist das möglich?

Router:

%Vor%

Dashboard (übergeordnete Komponente):

%Vor%

Hinweis: _ ist nur ein Wrapper für React.createFactory ()

    
Julien Vincent 04.08.2015, 15:36
quelle

1 Antwort

24

"Reagieren" deaktiviert die Komponenten immer dann, wenn sich ihr key ändert - das ist der Zweck dieser Eigenschaft, um die "Identität" einer Komponente zu verwalten. Insbesondere ist es erforderlich, wenn Sie die CSS-Übergänge von React verwenden, da die einzige Möglichkeit, eine Komponente zu animieren und in einer anderen zu animieren, separate DOM-Knoten sind.

Weil Sie {key: this.context.router.getCurrentPath()} an die handler Komponente in App übergeben, wird React die handler Komponente unmounten und neu mounten, selbst wenn es vom selben Typ ist, gibt getCurrentPath() einen anderen Wert zurück. Die Lösung wäre, einen Schlüssel zu finden, der sich ändert, wenn animiert werden soll, aber ansonsten unverändert bleibt.

    
Michelle Tilley 04.08.2015, 18:16
quelle

Tags und Links