2013-06-25 26 views
5

Staram się zrozumieć, jak działa kontekst w ramach Facebooka React JS.Kontekst w reaktywnym środowisku JS Facebooka

Podczas przekazywania specyfikacji do React.createClass niektóre metody (w szczególności procedury obsługi zdarzeń) wymagają użycia polecenia React.autoBind, aby "powiązać wywołania zwrotne z komponentem". Inne metody (szczególnie render()) nie mają tego wymogu, ale nadal szczęśliwie odnoszą się do "this.props" lub "this.state".

Jaki jest kontekst "this" używany przez metodę render(), jeśli nie jest to składnik?

Odpowiedz

3

Dzieje się tak dlatego, że mają one już pewne cechy wewnętrzne, takie jak render. W rzeczywistości, jeśli zadzwonisz pod numer autoBind i przekażesz te metody, otrzymasz błąd.

W przypadku metod niestandardowych początkowo chodzi o to, że można trzymać się dowolnego kontekstu, który chcemy przypisać, ale zmieniono to w wersji 0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html).

Zasadniczo, ponieważ związany this jest najczęściej potrzebny, od teraz każda metoda w createClass będzie teraz domyślnie autoBind.

0

W każdym ramach komponentu (nie tylko reagować), instrukcja obsługi zdarzeń trzeba zarządzanie odniesienia this ponieważ są one zarejestrowane do DOM jako callback funkcji, nie metody. Reagując na 0.3, możesz samemu związać się z numerem referencyjnym this lub użyć bardziej wydajnego React.autoBind. W React 0.4 wszystkie programy obsługi zdarzeń są związane ramą na drodze do DOM, więc nie musisz już o tym myśleć.

W ten sposób odniesienie this jest zawsze odniesieniem do instancji składnika reakcji.