Ho una web app sviluppata con Facebook Flux Architettura. La pagina ha due viste: una mostra un elenco di oggetti TODO. La seconda vista mostra un insieme casuale di elementi TODO.negozio Managing dipendenza dati in Reagire/Flux
ci sono chiaramente due preoccupazioni che devono essere gestiti da negozi. Il primo è l'elenco dei TODO disponibili. Il secondo è l'elenco degli oggetti TODO selezionati casualmente.
Ho quindi avere un TODOStore
, che è la preoccupazione è solo di gestire gli elementi TODO disponibili. Ha azioni ai loadTODOs
, addTODO
, deleteTODO
, editTODO
. All'avvio, questo negozio non carica tutti gli elementi TODO. Voglio che recuperi l'elenco di elementi TODO dal database solo quando necessario.
Il secondo negozio è il RandomTODOListStore
. È responsabilità gestire gli elementi TODO selezionati casualmente. Mi sembra che lo RandomTODOListStore
debba accedere agli articoli TODO attraverso lo TODOStore
, usando 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");
}
}
Il problema con questo è che, come affermato in precedenza, il TODOStore
non carica le voci TODO all'avvio.
La domanda è: "? Come funziona il RandomTODOListStore
garanzia che il TODOStore
ha già recuperato le voci todo".
Sì, ci ho pensato. Il problema è che TODOStore non dovrebbe preoccuparsi di come gli altri lo stanno usando. Non dovrebbe dovere reagire alle azioni di RandomTODOListStore. Immagina che ogni volta che ho qualcos'altro che ha bisogno di oggetti TODO, TODOStore sta andando a gonfiarsi molto velocemente. – rafalotufo
@rafalotufo vedi la mia modifica –