React + Alt: использовать данные из нескольких хранилищ для отправки запроса к источнику данных
Я работаю над приложением, использующим React с Alt Flux. В настоящее время я пытаюсь найти наилучший способ использовать данные из нескольких хранилищ Alt для составления запроса к бэкэнду.
Скажи, у меня есть SheetDataStore
, FiltersStore
и fetchFilteredData
метод в моем DataSource
файл. Чтобы получить правильные данные из бэкэнда, мне нужно перейти к fetchFilteredData
и некоторые данные листа и фильтры, но когда вы вызываете fetchFilteredData
Метод из одного из хранилищ, вы можете передать некоторые аргументы и состояние именно этого хранилища.
Итак, я вижу 2 способа решения этого дела:
1) Я делаю 2 действия: prepareFilters
а также fetchData
, prepareFilters
вызывается из компонента и обрабатывается FilterStore
, который готовит все необходимые данные и после этого звонит fetchData
действие, передавая подготовленные данные в качестве аргумента. SheetDataStore
обрабатывает fetchData
действие и вызывает fetchFilteredData
имея все необходимые данные сейчас.
Что мне здесь не нравится, так это то, что, как мне кажется, магазины не должны называть действия, так что это своего рода хакерское решение.
2) импортирую FilterStore
к SheetDataStore
и использовать FilterStore.getState()
внутри одного из SheetDataStore
методы, чтобы получить все данные, которые мне нужны. Это кажется легким, но могут быть некоторые подводные камни, связывающие магазины таким образом.
Есть ли лучшие практики для такого случая? Может быть, некоторые из вас сталкивались с подобной проблемой и могли бы порекомендовать, какой из путей выбрать из своего опыта?
1 ответ
Сделайте привязку в компоненте. Скажи у тебя FilterComponent
затем пройти поисковое действие SheetDataAction.search
к нему:<FilterComponent search={SheetDataAction.search} />
И в FilterComponent.render()
сделать что-то вроде <button onClick={() => this.props.search(this.props.criteria)} />