Как this.context работает в React?
Это не официальный API (еще!), но context
может быть супер полезен в React mixins. Однако его поведение и содержание для меня не совсем интуитивно понятны.
Откуда взялось содержимое this.context
?
(Начиная с этой записи, React находится в версии 0.12)
Ответы
Ответ 1
Я рассматривал это слишком this.context
, this.context
- это набор атрибутов, которые неявно передаются его this.context
а не передаются свойства явно. Вы можете посмотреть на комплекты тестирования React, чтобы увидеть, как они ведут себя:
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
Я также нашел эту статью Дейва Кинга полезной для понимания некоторых раскрытых методов и поведения: http://web.archive.org/web/20150319074927/https://www.tildedave.com/2014/11/15/introduction -в-контексты-в-среагировать-js.html
Ответ 2
Если вы не возражаете, у меня есть пост в контексте React
https://dlinau.wordpress.com/2015/07/19/take-a-deeper-look-into-context-in-react-js
Короче говоря, контекст - это объект с атрибутами, которые неявно передаются от элемента ко всем его дочерям и внукам.
Чтобы обмениваться данными/атрибутами с дочерними компонентами с контекстом, компонент определяет имена атрибутов и типы данных, доступные в контексте, определяя атрибут childContextTypes. Также необходимо определить метод getChildContext, который возвращает значения данных атрибутов в контексте. Ключи в childContextTypes должны быть точно таким же набором ключей в объекте, возвращаемом методом getChildContext.
Когда дочерний компонент хочет использовать данные из контекста родителей, он должен сначала объявить, что он хочет использовать явно, указав атрибуты contextTypes. contextTypes - это объект, определяющий имя и тип атрибутов, которые он хочет использовать.
Ответ 3
Документы имеют лучшую информацию. http://reactjs.org/docs/context.html
Короче говоря, это то, что контекст.
Top Parent
|
|
|
Inter Parent
|
|
|
Immediate Parent
|
|
|
Child
Скажем, вам нужно передать реквизит от Лучшего Родителя Ребенку. Вы должны будете установить его как опору для Немедленного Родителя и Меж родителя. И если это 2 пути, то реквизиты должны быть переданы в обе стороны.
Контекст позволяет вам обойти это и передавать данные напрямую из Top Parent to Child
Это становится более полезным, когда нескольким детям нужна одна и та же опора, но каждый глубоко вложен