2013-06-25 33 views
5

Non riesco a capire come funziona il contesto nel framework React JS di Facebook.Contesto nel framework Jeac React di Facebook

Quando si passa una specifica a React.createClass, alcuni metodi (in particolare i gestori di eventi) sembrano richiedere l'uso di React.autoBind per "associare i callback al componente". Altri metodi (in particolare render()) non hanno questo requisito ma fanno felice riferimento a "this.props" o "this.state".

Qual è il contesto di "this" utilizzato dal metodo render(), se non è il componente?

risposta

3

Ciò accade perché il tipo di telefono ha già autoBind per i metodi interni come render. Infatti, se chiami autoBind e superi questi metodi, riceverai un errore.

Per i metodi personalizzati, inizialmente l'idea è che si desideri attenersi al contesto che si desidera assegnare, ma questo viene modificato in 0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html).

Fondamentalmente perché il limite this è il più delle volte quello che vuoi, d'ora in poi ogni metodo in createClass sarà ora autoBind per impostazione predefinita.

0

In ogni framework di componenti (non solo reagire), gestori di eventi hanno bisogno di gestione manuale di riferimento this perché sono registrati nel DOM come un callback funzione di, non metodo. In reazione 0.3 è possibile associare il riferimento allo this da soli oppure è possibile utilizzare React.autoBind che è più efficiente. In React 0.4, tutti i gestori di eventi vengono vincolati dal framework nel loro modo nel DOM, quindi non devi più pensarci.

pertanto il riferimento this è sempre un riferimento a un'istanza del componente di reazione.