2016-11-08 5 views

Antwort

3

TL; DR React.render Gibt eine ReactComponent Instanz


Wie Sie geschrieben haben, React.render zwei Argumente akzeptiert. Es ist wichtig, ihre Bedeutung zu verstehen. Dieses Bit ist verwirrend, also bitte ertragen Sie mit mir.

1) ReactElement - ist eine virtuelle Dom-Instanz. Manchmal ordnet diese Instanz nativen DOM-Elementen wie "div" zu, manchmal wird sie einer ReactComponent-Instanz zugeordnet, z. B. MyComponent, die eine Baumstruktur anderer ReactElements einkapselt. Sie sehen die Rekursion hier?

ReactElement -> Tree<ReactComponent returns ReactElement -> Tree<ReactComponent returns ReactElement>> 

Nun lassen Sie sich

const virtualElement = React.createElement('MyComponent'); 

2) Das zweite Argument ist ein nativer DOM-Element eine virtuelle dom Instanz erstellen die virtualElement in zu machen.

Prinzipiell übersetzt React.render das virtualElement im nativen DOM-Element und fügt es in das native DOM-Element ein, das als zweites Argument in der React.render-Funktion angegeben ist.


Als Ergebnis liefert eine React.render ReactComponent Instanz (Stateful Darstellung verkapselt ReactElement Bäume).

Ich denke, Sie könnten ein wenig frustriert durch die Notation sein, aber es macht Sinn. Denken Sie daran, in Bezug auf Java zum Beispiel:

function Person getPerson() { 
    return new Person(); 
} 

See, die Signatur der Funktion, nicht PersonInstance als Rückgabewert angeben, sondern Person.

+0

Fantastisch, vielen Dank! Was gibt 'React.createClass' zurück? Welche Art ? In dieser Terminologie: https://gist.github.com/sebmarkbage/fcb1b6ab493b0c77d589#formal-type-definitionen? Ist es Typ ReactClass = (TProps) => ReactComponent ; '? – jhegedus

+0

Generische ReactComponent-Instanz erneut vom Typ TProps – lustoykov

Verwandte Themen