2014-11-27 14 views
8

To nie jest oficjalny API (yet!), Ale context może być bardzo użyteczny w miksach React. Jednak jego zachowanie i zawartość nie są dla mnie całkowicie intuicyjne.Jak to działa.context działa w React?

Skąd pochodzi zawartość this.context?

(W chwili pisania tego, React jest w wersji 0.12)

Odpowiedz

7

Szukałem w to zbyt wcześniej this.context to zestaw atrybutów, które są domyślnie przekazywane w dół do swoich dzieci, zamiast przechodzenia właściwości jawnie . Można spojrzeć na React testowania apartamentów, aby zobaczyć jak się zachowują:

https://github.com/facebook/react/blob/0.12-stable/src/core/tests/ReactCompositeComponent-test.js#L1101

https://github.com/facebook/react/blob/0.12-stable/src/core/tests/ReactElement-test.js#L100

Ja również znaleźć ten artykuł okazał się pomocny w zrozumieniu niektórych narażonych metod i zachowań: http://davehking.com/2014/11/15/introduction-to-contexts-in-react-js.html

+0

Dave'a Kinga jest wielki –

4

Jeśli nie masz nic przeciwko, mam wiadomość na temat kontekstu Reacta: https://dlinau.wordpress.com/2015/07/19/take-a-deeper-look-into-context-in-react-js

W skrócie, kontekst jest obiektem z atrybutami, które są niejawnie przekazywane z elementu do wszystkich jego dzieci i wnuków.

Aby udostępnić dane/atrybuty komponentom potomnym w kontekście, komponent definiuje nazwy atrybutów i typy danych dostępne w kontekście, definiując atrybut childContextTypes. Musi również zdefiniować metodę getChildContext, która zwraca wartości danych atrybutów w kontekście. Klucze w childContextTypes muszą być dokładnie tym samym zbiorem kluczy w obiekcie zwróconym przez metodę getChildContext.

Gdy komponent potomny chce używać danych z kontekstu rodzica, musi najpierw zadeklarować, co chce użyć jawnie, definiując atrybut contextTypes. contextTypes to obiekt określający nazwę i typ atrybutów, których chcesz użyć.

artykuł
+1

Zauważ, że [Link tylko odpowiedzi] (http://meta.stackoverflow.com/tags/link-only-answers/info) są zniechęceni, SO odpowiedzi powinny być końcowemu punkt poszukiwania rozwiązania (w przeciwieństwie do kolejnego zatrzymania referencji, które z czasem stają się nieaktualne). Proszę rozważyć dodanie samodzielnego streszczenia tutaj, zachowując odnośnik jako odniesienie – kleopatra