2016-07-12 7 views
4

Ich lese oft, dass ich 'Stateless Function Components' verwenden sollte, wenn möglich, aber meistens ohne irgendeine Erklärung warum. Was sind die Vorteile?Was sind die Vorteile von "Stateless Function Components" gegenüber "ES6 Class Components"?

+0

Googeln dieser beiden Phrasen jeder kam mit [diesem Artikel] (https://facebook.github.io/react/docs/reusable-components.html) als erstes Ergebnis. Es listet die Vorteile auf. Dies ist jedoch für SO zu weit gefasst. Vielleicht solltest du einige Artikel lesen und dann zurückkommen und erklären, was du weißt und nicht weißt. – 4castle

+0

Ich habe diesen Artikel gelesen. Sie gaben nur so wenig Informationen über die Vorteile. Ich denke, es wäre hilfreich für mich und andere, mehr Details von SO darauf zu bekommen. – Rotareti

+0

Interessant. "Auf Eis gelegt". Das ist eine völlig gültige und normale Frage. Gute Antwort ist kurz, und es gibt nicht "zu viele" von ihnen (sehen Sie tatsächlich "zu viele Antworten" oder etwas, das "zu lang" ist? Keines davon). – gaperton

Antwort

3

Erstens werden zustandslose Funktionskomponenten schneller gerendert, da es in der React-Rendering-Pipeline einen optimierten Kurzpfad dafür gibt.

Zweitens ist der Code viel sauberer, da Sie weniger tippen und es gibt fast kein visuelles Rauschen. Wenn Sie moderne JS verwenden, natürlich. Check it out, ich definiere einen „custom tag“:

const MyFancyDiv = ({ children, ...otherProps }) => (
    <div { ...otherProps } className='i-am-fancy-wrapper'> 
     { children } 
    </div> 
); 

Für alles, was nicht einen Zustand, den Kontext hat, oder benutzerdefinierte Lifecycle Methoden, dies ist der bevorzugte Weg.

Und es ist eigentlich die Funktion von React, die es sehr schwierig für andere Rahmen zu schlagen ist. Verwenden Sie es, wenn Sie können.

+0

Kein Vorteil, aber vielleicht erwähnenswert: Funktionelle Komponenten haben keine Instanzen. Klassenkomponenten haben Instanzen, aber Sie müssen nie direkt eine Komponenteninstanz erstellen - React kümmert sich darum. –

+0

Ja, das ist einer der Gründe, warum sie schneller gerendert werden. Keine Instanzen, keine Lebenszyklus-Hooks, vereinfachter Rendering-Pfad. – gaperton

Verwandte Themen