Я на самом деле изучаю структуру потока, и есть кое-что, что я не могу понять относительно магазинов .
Что именно они?
Я прочитал много статей, и кажется, что это касается области.
Означает ли это, что это «абстрактная» часть, относящаяся к вызовам API или серверным вызовам?
Это не очень понятно для меня.
Редактировать: это может быть то же самое, что угловая фабрика? Получение удаленных данных, создание бизнес-задачи или сохранение некоторых состояний приложения (например, текущий пользователь подключен)?
design-patterns
architecture
facebook
reactjs
mfrachet
источник
источник
Ответы:
Хорошо, позвольте мне объяснить вам шаг за шагом
1 Что такое флюс?
Они также называют это потоком по причине.
Реализация Flux
Чат с Flux
Реагируйте : Эй, Действие, кто-то нажал эту кнопку «Сохранить курс».
Действие : Спасибо, Реакт! Я зарегистрировал создателя действия у диспетчера, поэтому диспетчер должен позаботиться об уведомлении всех магазинов, которые его интересуют.
Диспетчер : Позвольте мне посмотреть, кому небезразлично сохранение курса. Ах! Похоже, что Магазин зарегистрировал обратный звонок со мной, поэтому я дам ей знать.
Магазин : Привет диспетчер! Спасибо за обновление! Я буду обновлять мои данные с учетом полезной нагрузки, которую вы отправили. Затем я отправлю событие для компонентов React, которые заботятся.
Реагировать : Ооо! Блестящие новые данные из магазина! Я обновлю интерфейс, чтобы отразить это!
Flux API
register (функция callback) - «Эй, диспетчер, запусти меня, когда произойдут какие-то действия. -Хранить"
unregister (string id) - «Эй, диспетчер, перестань беспокоиться об этом действии. -Хранить"
waitFor (array ids) - «Сначала обновите этот магазин. -Хранить"
рассылка (объект полезной нагрузки) - «Эй, диспетчер, расскажи магазинам об этом действии. -действие»
isDispatching () - «Я сейчас занят отправкой обратных вызовов».
поэтому вопрос, поднятый в нашем уме
Не совсем.
Отличается двумя способами:
1. Каждая полезная нагрузка отправляется всем зарегистрированным обратным вызовам.
2. Обратные вызовы могут ждать других обратных вызовов.
Резюме
Flux - это шаблон для однонаправленных потоков данных. Действия инкапсулируют события. Dispatcher - это центральный хаб, который содержит обратные вызовы. Хранит состояние приложения. Многие реализации.
источник
Рассматривая простой пример ( https://github.com/facebook/flux/tree/master/examples/flux-todomvc/ ), «магазины управляют состоянием приложения для определенного домена в приложении.« То есть они содержат данные о состоянии аспекта приложения и весь код для его изменения. Всякий раз, когда есть новое обновление от Диспетчера, все Магазины видят его, они решают, как обновить свои данные в ответ, и затем они уведомляют Представления, что данные изменились. В примерах хранилища содержат такие вещи, как «список невидимых потоков» (где диспетчер уведомляет их о том, что новое сообщение поступило или прочитано старое, а представления отображают потоки сообщений для пользователя) и «текущее время воспроизведения и государство."
С технической точки зрения: это промежуточный уровень инфраструктуры, который регистрирует обратные вызовы с помощью Dispatcher для получения обновлений, а затем уведомляет представления при изменении состояния данных. (Затем представления могут отправлять действия обратно в Dispatcher.) Они реализуют абстрактный интерфейс, в котором каждое хранилище регистрирует обратный вызов с помощью Dispatcher и передает события в представления, но каждое хранилище, по-видимому, представляет определенный домен конкретным образом. (Есть ли контрпримеры?)
источник
Хранилища - это области кода, в которых хранится состояние приложения и сложная логика. Причина этого заключается в том, что несколько представлений, вероятно, будут использовать одни и те же данные, но отображать их по-разному, или отображать некоторые, но не все данные для конкретного домена. Например, пользователь входит в систему, и вы получаете его имя, фамилию, адрес электронной почты, фотографию, город, адрес, номер телефона и т. Д. Эта информация отображается в отдельных представлениях. Вместо дублирования данных между представлениями мы можем использовать один магазин под названием UserStore, в котором хранятся данные для пользователя. Это упрощает систему, предоставляя «одно место для внесения изменений» всякий раз, когда необходимо изменить логику или сохраненные данные. Есть много других причин для использования Магазина, но я думаю, что это наиболее очевидная причина.
источник