Предположим, у меня есть два вида контроллера - ItemsContainer
, Item
и магазин ItemsStore
, в котором хранится список товаров. Когда список элементов изменяется из-за какого-либо действия, хранилище испускает изменения, и оба представления получают свое состояние от ItemsStore
.Использование одного магазина для нескольких элементов того же типа
ItemsContainer
звонки getItems
и список перечней позиций. Item
вызывает метод getItem
с его идентификатором и сам редертинг.
Теперь, что является самым простым способом позволить мне иметь несколько ItemsContainer
на экране?
я могу переписать ItemsStore
, так что она хранит свои данные в карте id -> storeData
, но это будет означать, что каждый ItemsStore
методу будет нужен еще один параметр storeId
также переданной ей. getItems()
будет getItems(storeId)
, getItem(itemId)
будет getItem(storeId, itemId)
который выглядит слишком уродливым. Действия также потребуют прохождения storeId
.
Another way, как я понял, делает магазин, который будет управлять данными ItemsStore
, и повторно инициализировать его, вызывая STORE_UPDATE
действие.
Проблема с этим методом есть, если мы имеем два (A и B) ItemsContainer
«S, и активный контейнер представляет собой, так что ItemsStore
содержит элементы, которые предоставляются в А, контейнер Б будет все еще слушать ItemsStore
изменений , Я могу добавить проверку, если это активный контейнер в методе ItemsContainer.onChange
, но я не уверен, что так оно и должно быть сделано.
Спасибо, но в моем случае я не могу хранить элементы отдельных категорий в одном массиве. Я искал решение, с помощью которого я смогу использовать свои ItemsStore с небольшими изменениями. – user3445165