die ES6 Syntax für React Komponente zu schaffen ist export default class ExampleComponent extends React.Component
.Allerdings es immer noch, dass, wenn import React from 'react'
export default class ExampleComponent
ohne extends React.Component
unter der Bedingung arbeiten; Warum das passierterstrecken sich nicht React.Component
Antwort
Es ist einfach, in dieser Situation zu sein und zu verpassen, was passiert, aber der Unterschied ist wirklich riesig: Ohne React.Component erweitern Sie nur eine JS-Klasse. Außerdem:
- , weil es den Anforderungen einer Reaktion Klasse erfüllt (die Sie entweder mit
React.createClass()
oder als ES6 Klasse erstellen kann), es werde noch „arbeiten“, - aber werden Sie nicht bekomme lifeCyle Methoden oder Zugang zu state (jemand korrigiert mich, wenn ich falsch liege, ziemlich sicher, würdest du nicht mit nur einer Klasse bc, es gibt keine Backing-Instanz angehängt).
- Diese "einfacheren" Komponenten sind in der Regel schneller für React und benötigen weniger "Maschinen", da sie nur eine (hoffentlich) reine Funktion sind, die etwas rendert.
- so ist der Hauptunterschied hier, dass mit nur einer Klasse, die eine Rendermethode hat, Sie nicht so viel "erfordern". das sollte reichen am meisten der Zeit; Sie sollten keinen Zugriff auf
state
für alles benötigen
Hoffe, dass hilft!
React Dokumentation auf Dieses Thema: https://facebook.github.io/react/docs/state-and-lifecycle.html. Ich stimme @markthethomas zu. Aus der Dokumentation: "... als Klassen definierte Komponenten haben einige zusätzliche Funktionen. Der lokale Zustand ist genau das: eine Funktion, die nur für Klassen verfügbar ist." Die Dokumente geben dies nicht explizit für Lebenszyklus-Hooks an, aber das gleiche gilt eindeutig für diese. –
Sie erstellen ein "reines" JavaScript class, aber sobald es eine React.Component
nicht erweitert wird, können Sie nicht auf bestimmtes React-Verhalten zugreifen. Überprüfen Sie how extends work.
überprüfen Sie diese https://github.com/gaearon/flux-react -router-Beispiel, eine Menge von React-Komponente React.Component nicht erweitern, aber immer noch gut funktioniert – Guigui
Ich glaube, das ist wegen dieser veralteten Bibliothek: https://github.com/gaearon/react-pure-render –
- 1. Kann `JTableHeader` sich über mehrere Spalten erstrecken?
- 2. Klasse erweitert React.Component nicht getInitialState können in
- 3. Kann sich eine PHP-Sitzung über Subdomains erstrecken?
- 4. Tick-Labels, die sich über mehrere Zeilen erstrecken
- 5. Duplikate entfernen, die sich über mehrere Zeilen erstrecken
- 6. Bootstrap-Layout Inhalt Formularelemente erstrecken sich außerhalb der Spalte
- 7. Eingabefeld, Text umwickeln statt sich horizontal zu erstrecken
- 8. erstrecken Eigenschaft der Basisschnittstelle
- 9. Formatieren von jQuery-Strings, die sich über mehrere Zeilen erstrecken sollten
- 10. ios7 UINavigationBar hört nach einer Weile auf, sich unter der Statusleiste zu erstrecken
- 11. Position relativ und dann Position anwenden: absolut macht das div sich über den Container erstrecken?
- 12. Wie erhalten Sie Schaltflächengruppen, die sich in Bootstrap über die gesamte Breite eines übergeordneten Elements erstrecken?
- 13. IIS-Anforderung von nicht www zu www umleiten (mit mehreren Domänen, die sich über mehrere TLDs erstrecken)
- 14. Implementieren von Parent-> Child-Drilldown in Cocoa mit Core Data-Bindungen, die sich über mehrere Entitäten erstrecken
- 15. $ .mobile.showPageLoadingMsg() dreht sich nicht
- 16. Bild bewegt sich nicht?
- 17. UITextView dreht sich nicht
- 18. titleForHeaderInSection bewegen sich nicht
- 19. Schriftfarbe verändert sich nicht
- 20. Tabellenwert ändern sich nicht
- 21. Warum React.Component nur einmal gerendert wird, obwohl ich mehrere Zielelemente habe
- 22. Warum aktualisiert sich mein Status nicht in React.js
- 23. Wie mache ich eine Tablix über mehrere Seiten erstrecken, auch wenn KeepTogether = "False"?
- 24. Qt, nicht-modale Dialog schließt sich nicht
- 25. tinyMCE Editorleiste zeigt sich nicht
- 26. .Net WebBrowser.DocumentText ändert sich nicht!
- 27. Modal öffnet sich nicht mehr
- 28. Keras Genauigkeit ändert sich nicht
- 29. Image Hintergrund ändert sich nicht
- 30. Python Zeitvariable ändert sich nicht
Ersteres hat Zugriff auf Lebenszyklusmethoden (z. B. 'componentDidMount'), während letzteres nicht funktioniert; es ist eine statische Komponente. – lux
@lux Letzteres hat Zugriff auf 'rendern' überprüfen Sie diese https://github.com/gaearon/flux-react-router-beispiel – Guigui
Und nur 'render()', laut der Dokumentation: https: // facebook. github.io/react/blog/2015/10/07/react-v0.14.html#stateless-functional-components -> '" Diese Komponenten verhalten sich genau wie eine React-Klasse, wobei nur eine Rendermethode definiert ist "' – lux