Capisco che ho bisogno di un dispatcher emit.change()
, per far sapere a tutti i componenti che qualcosa è cambiato all'interno del negozio. Ma non capisco perché ho bisogno di inviare azioni piuttosto che chiamare negozi direttamente dall'interno delle azioni,React/Flux - Perché ho bisogno di un action-dispatcher?
.i.e. perché dovrei fare questo:
var Dispatcher = require('dispatcher');
var MyActions = {
addItem: function(item){
Dispatcher.dispatch({
action: 'ADD_ITEM',
payload: item
})
}
}
piuttosto che questo:
var MyStore = require('mystore');
var MyActions = {
addItem: function(item){
MyStore.addItem(item);
}
}
E 'per il caso che più negozi ascoltano lo stesso evento, per esempio quando StoreA
e StoreB
ascoltare ADD_ITEM
pure?
Grazie per l'ottima risposta! Ho un'altra domanda relativa a questo, ed è per questo che sono arrivato a questa domanda qui in primo luogo. Devo restituire un valore (l'ID di un elemento appena creato) da un'azione e passarlo all'azione successiva. Devo spedire la prossima azione incluso l'ID da un punto vendita piuttosto che inviare più azioni dopo l'altra? L'altra domanda è [qui] (http://stackoverflow.com/questions/33987477/react-flux-return-value-from-flux-dispatcher-store) –
La cosa migliore da fare sarebbe utilizzare la stessa azione e ascoltare su entrambi i negozi e apportare le modifiche di conseguenza. In realtà, c'è sempre un modo per farlo. Devi solo modificare leggermente il tuo codice. Disponi con questo {data_for_store1: {...}, data_for_store2: {...}, azione: 'ADD_ITEM'} ed entrambi i negozi possono ora utilizzare la stessa azione. questo aiuta? –
Inizialmente era ciò che stavo facendo, ma action1 crea un nuovo ID in StoreA e devo passare in qualche modo l'ID appena creato a StoreB.Questo può essere fatto modificando il dispatcher, in modo che possa restituire i valori dopo la spedizione? –