2015-07-14 1 views
4

После того, как я немного поработал с Реакцией, я думаю, что мне в основном нравится, но есть несколько вещей, которые я пытаюсь понять, как это сделать. Одним из них является базовое общение между компонентами, которые не находятся в отношениях между родителем и ребенком.В React.js, как бы я установил простую глобальную систему событий для связи между компонентами?

Как я понял из учебника, большинство сообщений осуществляется через отношения родитель-потомок с использованием состояний и реквизитов, и это кажется достаточно простым. Но когда нет отношений между родителями и детьми, документы рекомендуют setting up a global event system и просто оставляйте это для меня, чтобы выяснить. Не совсем уверен, что это значит.

Возьмем, к примеру, проблему, над которой я работаю. У меня есть компонент <SearchBar /> в навигационной панели моей страницы, и я хотел бы использовать это, чтобы заполнить результаты поиска в компоненте <ResultsTab /> в другом месте на странице. Попытка связать их с помощью простого родителя просто непрактична. Итак, как я могу обновить ResultsTab с результатами SearchBar? Я уверен, что я мог бы просто сделать это через jQuery и забыть об React, но каков правильный способ React для этого?

+1

Ну, в документах React указано, что вы можете использовать что-то вроде шаблона потока для достижения связи между компонентами. Есть куча реализаций Flux, которые вы можете использовать, и, похоже, она соответствует способу Реагента делать вещи. – Achrome

+0

Вы также можете найти pubsub. –

+0

Для данных (например, ваш пример) вы можете использовать флюс/магистраль. Для глобальных событий мы используем pubsub. – David

ответ

0

Facebook выпустил шаблон под названием Flux для этого - https://github.com/facebook/flux. Он может быть очень многословным в простых приложениях, но он работает хорошо.

Как и все эти вещи, сообщество перемещается очень быстро и делает много изменений. Я рекомендую привыкнуть к очень простым примерам, а затем читать https://medium.com/@dan_abramov/the-evolution-of-flux-frameworks-6c16ad26bb31 и попробовать некоторые из других.

@ dan_abramov's https://github.com/gaearon/redux кажется очень популярным на данный момент.

Смежные вопросы