2017-10-13 3 views
0

Ob Links oder this.props.history.push(), URL in der Adressleiste wird korrekt aktualisiert, sowie this.props.location in einer Komponente, die höher ist der DOM-Baum (in diesem Fall meine App Komponente).React Router Standort nur in einigen Komponenten aktualisiert

Aus irgendeinem Grund aktualisiert es nicht this.props.location in meinen Komponenten, die weiter unten in der Struktur sind, die meine Routen fehlschlagen verursacht.

Irgendwelche Vermutungen, was könnte schief gehen?

HINWEIS: Ich verwende Redux in diesem Projekt, aber ich ändere nicht die this.props.history mit Redux, zumindest für jetzt. Ich glaube nicht, dass dies etwas bewirken sollte, aber wenn es so ist, lassen Sie es mich wissen

bearbeiten: Hier ist der relevante Teil des DOM Baumes (mit meiner E-Mail sorgfältig ausgekratzt), wenn es hilfreich ist. Wie Sie sehen können, hat die Authenticated Komponente eine veraltete this.props.location (/plans), während die App korrekt ist (/posts). Beide sind in router eingepackt. Komponenten weiter unten im Baum als Authenticated haben auch den falschen Standort.

+0

Frage über den Fehler bei Komponenten: Sind sie mit redux oder 'this.props.location' von seinem übergeordneten weitergegeben? – Andrew

+0

@Andrew die Komponenten sind in 'withRouter' eingewickelt – RyanQuey

Antwort

1

Sie es zu tun haben wahrscheinlich mit blocked updates. Glücklicherweise ist es nicht schwer zu lösen:

Wenn Sie in dieser Ausgabe ausgeführt werden, während ein höherer Ordnung Komponente wie connect (Fa reagieren-redux), können Sie nur diese Komponente wickeln in einem withRouter die blockierte entfernen Aktualisierung.

// before 
const MyConnectedComponent = connect(mapStateToProps)(MyComponent) 
// after 
const MyConnectedComponent = withRouter(connect(mapStateToProps)(MyComponent)) 
+0

Ich habe definitiv einen Fehler gemacht, aber es ist nicht das Problem in diesem Fall. Die Komponente, die nicht aktualisiert wird, ist in 'withRouter' eingeschlossen und hat this.props.location als Prop. In der Tat, wenn ich die Seite aktualisiere, jetzt, dass die URL-Leiste aktualisiert wird, wird die korrekte "this.props.location" in – RyanQuey

+0

übergeben Es ist ein bisschen schwer zu sehen, aber ich habe ein Bild zur Erläuterung hinzugefügt – RyanQuey

+1

Es ist wahrscheinlich die gleiches Problem, nur höher oben am Baum (wahrscheinlich bei 'Connect (User)'). Die 'Route'-Komponente macht keine magischen globalen Änderungen zu hören; Wenn _anything_ higher in der Struktur für 'shouldComponentUpdate' false zurückgibt, wird das erneute Rendern nicht ausgeführt. –

Verwandte Themen