Heim > Web-Frontend > js-Tutorial > Hauptteil

Analyse: React-Router-Trigger werden beim Routing von Sprüngen zweimal gerendert

巴扎黑
Freigeben: 2017-07-22 13:57:23
Original
2155 Leute haben es durchsucht

Problem: Wenn React-Router springt, wird das Rendern zweimal ausgelöst, wodurch die Seite wiederholt gerendert wird.

Grund: React-Router ^3.x.x im Projekt verwendet. Wenn der React-Router springt, hat der Wert von this.props.location.action zwei Zustände. Beide Zustände lösen das Rendern aus. Die Seite wird also zweimal gerendert.

1. Wenn auf den Link geklickt wird, this.props.location.action=PUSH, 2. Wenn sich der Browser vorwärts und rückwärts bewegt, this.props.location.action=POP.

Wenn also auf den Link geklickt wird, lautet der Status zuerst PUSH, dann bewegt sich der Browser vorwärts und rückwärts und der Status ändert sich in POP.

Lösung: Verwenden Sie in der Routing-Ebene die periodische Reaktionsfunktion ShouldComponentUpdate (Studenten, die mit dem Lebenszyklus nicht vertraut sind, überprüfen Sie die Informationen bitte separat), um zu beurteilen, ob sich this.props.location.action lohnt. Bestimmen Sie entsprechend den tatsächlichen Anforderungen des Projekts, ob der Wert PUSH oder POP ist.

Ich habe mich für POP entschieden, da einige Anforderungen im Projekt die Verwendung von window.location.hash='xxxxxxxx' erfordern. In diesem Fall kann PUSH nicht ausgelöst werden, sodass der Routing-Sprung fehlschlägt.

1 shouldComponentUpdate() {2         // POP 浏览器前进后退, PUSH 点击Link3         return this.props.location.action === "POP"4 }
Nach dem Login kopieren

Hinweis: Facebook-Beamte sagten, dass es sich bei dieser Situation um einen FEHLER von React-Router handelt, der in ^4.x.x behoben wurde.

Der obige Inhalt ist der, auf den ich während der eigentlichen Projektentwicklung gestoßen bin. Jeder stößt auf unterschiedliche Fehler, also lassen Sie es mich bitte wissen. Danke!

Das obige ist der detaillierte Inhalt vonAnalyse: React-Router-Trigger werden beim Routing von Sprüngen zweimal gerendert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!