2016-03-03 3 views
13

Ich arbeite an einem React Native-Projekt und verwende ES6-Klassen für React-Komponenten.React.js - Eigenschaftsinitialisierungen für alle Komponentenmethoden verwenden

Da React-Komponenten, die über ES6-Klassen definiert sind, keine automatische Bindung haben, kombiniert das React-Team recommends ES7-Eigenschaftsinitialisierer mit Pfeilfunktionen, um denselben Effekt zu erzeugen.

Um konsequent zu sein und verhindert, dass eine Verwechslung mit dieser Bindung, ich ES7 Eigenschaft Initialisierungen für alle Komponentenmethoden verwenden:

class Foo extends React.Component { 
    constructor(props) { 
    super(props); 
    ... 
    } 

    componentDidMount =() => { 
     ... 
    }; 

    bar =() => { 
    ... 
    }; 

    render =() => { 
    ... 
    }; 
} 

Ich frage mich - gibt es irgendwelche ernsthafte Leistungs Einsprüche von bewusst zu sein, ? Insbesondere frage ich mich über die render() -Methode.

Insgesamt scheint dies ein guter Ansatz zu sein?

Antwort

10

Der größte Nachteil ist, dass diese besondere Eigenschaft nicht Standard noch vereinbart ist. (Es wird nicht ES7 sein, da es keine ES7 gibt. Vielleicht ES2017, aber immer noch unklar.)

Es gibt auch Kosten für die Zuweisung mehrerer neuer langlebiger Objekte und ihre Speicherung in der Klasse.

Ich würde dies nicht empfehlen. Nur für Rückrufe.

+0

Danke für die Rückmeldung! – ender672

+1

Schnelle Nachverfolgung - mein Team hat entschieden, die bind() -Methode für Rückrufe zu verwenden, und wir warten jetzt auf Property-Initialisierungen mit Pfeilfunktionen. Ihre Antwort hat uns geholfen, zu dieser Entscheidung zu kommen. – ender672