Я считаю, что примера приложения todo flux немного не хватает, поэтому я пытаюсь разобраться в этом, разрабатывая приложение для обучения и экспериментов.
Приложение представляет собой организатор корзины с фруктами с помощью перетаскивания. У меня есть несколько корзин, между которыми можно перетаскивать разные фрукты. Вы можете выделить фрукт, щелкнув по нему, и последний перетаскиваемый элемент останется выделенным.
Исходя из этого у меня есть 3 магазина:
- Магазин фруктов
- КорзинаМагазин
- AppStateStore — для отслеживания последнего нажатия и последнего перетаскивания фруктов
Когда происходит действие пользователя, FruitAction отправляется и обрабатывается либо AppStateStore, если фрукт был нажат, либо всеми хранилищами, если фрукт был перемещен в другую корзину.
Основной компонент AppView прослушивает события изменения как из FruitStore, так и из AppStateStore и выполняет повторную визуализацию.
Мои вопросы:
- Это хороший подход для этого сценария?
- Должен ли AppView прослушивать несколько магазинов? Как мне предотвратить рендеринг AppView несколько раз подряд? Прямо сейчас, когда фрукт был перемещен, и FruitStore, и AppStateStore запускают события change, вызывая два рендеринга подряд.
- В статье Flux на сайте React показано представление, отправляющее объект действия (например, AppDispatcher.dispatch(TodoActions.updateText())) ), но было бы лучше, если бы действие отправлялось само (например, просто FruitActions.moveBasket() ), а AppView не знали о AppDispatcher?
- В настоящее время только AppView прослушивает хранилища, но должны ли отдельные компоненты Fruit прослушивать AppStateStore, чтобы повторно отображать только себя, если они должны быть выделены?
- Есть ли более полный пример архитектуры Flux или что-то подобное?