Mam aplikację internetową opracowaną przy użyciu architektury Flux Facebooka. Strona ma dwa widoki: jeden wyświetla listę elementów TODO. Drugi widok wyświetla losowy zestaw elementów TODO.Zarządzanie zależnościami danych sklepu w React/Flux
Istnieją wyraźnie dwie kwestie, które muszą być zarządzane przez sklepy. Pierwszy to lista dostępnych TODO. Druga to lista losowo wybranych elementów TODO.
Mam zatem TODOStore
, którego przedmiotem jest wyłącznie zarządzanie dostępnymi pozycjami TODO. Ma akcje do loadTODOs
, addTODO
, , deleteTODO
, editTODO
. Podczas uruchamiania ten sklep nie ładuje wszystkich elementów TODO. Chcę, aby pobierał listę elementów TODO z bazy danych tylko w razie potrzeby.
Drugi sklep to RandomTODOListStore
. Odpowiedzialnością jest zarządzanie losowo wybranymi przedmiotami TODO. Wydaje mi się, że RandomTODOListStore
powinien uzyskać dostęp do elementów TODO za pośrednictwem TODOStore
, używając TODOStore.getTODOItems()
.
function RandomTODOListStore() {
var $randomTODOs = [];
dispatcher.register(function(payload) {
var action = payload.action;
switch (action.actionType) {
case Constants.LOAD_RANDOM_TODO:
loadRandomTODO();
break;
}
});
function loadRandomTODO() {
$randomTODOs = selectRandom(TODOStore.getTODOList());
emit("change");
}
}
Problem polega na tym, że, jak wcześniej wspomniano, TODOStore
nie ładuje elementy TODO na starcie.
Pytanie brzmi: "W jaki sposób RandomTODOListStore
gwarantuje, że TODOStore
już odebrał elementy TODO?".
Tak, pomyślałem o tym. Problem polega na tym, że TODOStore nie powinien przejmować się tym, jak inni go używają. Nie powinno reagować na działania RandomTODOListStore. Wyobraź sobie, że za każdym razem, gdy mam coś innego, co wymaga pozycji TODO, TODOStore bardzo szybko się rozdęci. – rafalotufo
@rafalotufo zobacz moją edycję –