In React componentWillReceiveProps Funktion, wenn ich überprüfe, ob die Requisiten zuerst geändert haben, ist es in Ordnung, dann einen AJAX-Aufruf zu machen? Es scheint, dass diese Funktion in React Fiber mehrfach aufgerufen werden kann (post 16 beta) und dieses Blog (https://medium.com/@baphemot/understanding-reactjs-component-life-cycle-823a640b3e8d) schlägt vor, dass keine Nebenwirkungen durchgeführt werden sollten. Allerdings habe ich in den React-Dokumenten keine solche Warnung gesehen und ich dachte, dass der AJAX-Aufruf nur gemacht wurde, wenn die Requisiten geändert wurden, das wäre OK.Ist es sicher, componentWillReceiveProps() mit Nebenwirkungen aufzurufen
1
A
Antwort
0
Es ist in Ordnung, einen Anruf in OnWillReceiveProps zu tätigen, aber es liegt an Ihnen, eine Bedingung zu definieren, die Sinn macht. Wenn Ihr Zustand gut ist, sollten Sie nicht viel telefonieren. Jedenfalls sollten Sie in den meisten Fällen die Verwendung von OnWillReceiveProps vermeiden, die in Bezug auf die Leistung gierig ist.
Verwandte Themen
- 1. Ist es sicher, Casted Funktionszeiger aufzurufen?
- 2. Ist es sicher, TWinControl.Update von TGraphicControl.Paint aufzurufen?
- 3. Ist es sicher, Objektreferenz in componentWillReceiveProps zu überprüfen?
- 4. Ist es sicher, Controller-Aktion von JavaScript mit Parametern aufzurufen?
- 5. Ist es sicher, pthread_create mit einem Mutex aufzurufen?
- 6. Ist es sicher, einen RCW von einem Finalizer aus aufzurufen?
- 7. Ist es sicher, CFRunLoopStop von einem anderen Thread aufzurufen?
- 8. Ist es sicher, nicht konstante Elementfunktionen für rvalue-Objekte aufzurufen?
- 9. Ist es sicher, die Methode View.post (runnable) im Hauptthread aufzurufen?
- 10. Ist es sicher, Screen.hide() nach Screen.dispose() in LibGDX aufzurufen?
- 11. Ist es sicher, ConnectivityManager requestNetwork() im Haupt-Thread aufzurufen?
- 12. Ist es sicher, kclass.memberProperties für ein unbekanntes Objekt (Any) aufzurufen?
- 13. Ist es sicher, eine C-Funktion mit mehr Argumenten aufzurufen, als sie erwartet?
- 14. Ist es sicher, ShowDialog in einer Methode aufzurufen, die mit Task.Run gestartet wurde?
- 15. Setze Anfangszustand mit componentwillreceiveprops?
- 16. Problem mit componentWillReceiveProps
- 17. Ist es OK, Task.Run intern mit Anweisung aufzurufen?
- 18. Wann ist es immer angemessen, fileExistsAtPath aufzurufen?
- 19. Mysqli_real_escape_string mit einzelnen Anführungszeichen - ist es sicher?
- 20. Meteor - Wie sicher ist es?
- 21. Ist es sicher, ReadAsString und dann ReadAsStream auf einem HttpClient-Response-Inhalt aufzurufen?
- 22. Ist es sicher, foreach auf leeren PHP-Arrays in PHP 5.4 aufzurufen?
- 23. Ist es sicher, Initialisierer mehrere Male auf dem gleichen "allokierten" Objekt aufzurufen?
- 24. Konstruktorproblem delegieren - Ist es sicher?
- 25. Ist es sicher, SyncLock und MemoryBarrier aufzurufen, auch wenn Sie nicht in einem separaten Thread sind?
- 26. Ist es möglich, .forRoot erneut aufzurufen? Normalerweise
- 27. Ist es nicht sicher, Accessormethoden in init- und dealloc-Methoden in Objective C aufzurufen?
- 28. Ist es sicher, eine statische synchronisierte Methode aus nicht verwandten Klassen aufzurufen?
- 29. Ist es sicher, eval zu verwenden, um die Coffeescript-Klasse dynamisch aufzurufen? Diese
- 30. Ist es sicher, bus.Publish von einem NServiceBus-Handler aufzurufen, wenn Sie den Verteiler verwenden?
Warum nicht den Ajax Aufruf in 'ComponentDidUpdate' dann? – xDreamCoding
@xDreamCoding, ich arbeite mit diesem Redux-Beispiel https://github.com/reactjs/redux/blob/master/examples/async/src/containers/App.js. Ich nehme an, dass dies getan wurde, weil es nicht nötig war, mit einem der DOM-Knoten zu arbeiten, so dass der AJAX-Aufruf so früh wie möglich erfolgt und der Versand aufgerufen wird, wenn die Antwort zurückkommt. es tritt ein Bruch auf. – user994165
Ich denke, Sie können auf die Beispiele eines Repo mit Kernmitwirkenden des reacts-Teams vertrauen. Was sie dort tun, sollte als Best Practice betrachtet werden, oder? Ich bezweifle nur, dass Sie eine bessere Antwort auf Stackoverflow bekommen könnten. – xDreamCoding