Ho qualche logica che ho inserito nel riduttore che penso possa essere inserito nell'Azione e trasmesso?Come dividere la logica tra riduttori di Redux e creatori di azioni?
È consigliabile inserire questo tipo di elementi nelle azioni o nel riduttore?
Esempio di lavoro here.
codice Reducer:
function Card() {
this.card = (Math.random()*4).toFixed(0);
}
Card.prototype = {
getRandom: function(){
var card;
//console.log(this.card)
switch (this.card) {
case '1':
card = 'heart';
break;
case '2':
//card = 'diamonds';
card = 'heart'; // weight the odds abit
break;
case '3':
card = 'club';
break;
case '4':
card = 'spade';
break;
default:
card = 'heart';
break;
}
return card;
}
}
var dealer = {
deal: function(){
var results = [];
for(var i = 0; i <4; i++){
var card = new Card();
results.push(card.getRandom());
}
console.log(results);
return results;
}
}
const initialState = {
count: 0,
data: []
}
function counter (state = initialState, action) {
let count = state.count
switch (action.type) {
case 'increase':
return Object.assign({}, state, {
data: dealer.deal(),
count: state.count+1
})
default:
return state
}
}
Riduttori devono contenere la logica per mutare lo Stato, ma è meglio la pratica di non scrivere questo all'interno l'istruzione switch, ma estrarre la logica per una funzione separata passando il CurrentState e restituendo il nuovo stato. Un ottimo tutorial: http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html#loading-entries – JensDebergh
"I riduttori dovrebbero contenere la logica per la modifica dello stato"? – user3224271
Il riduttore dovrebbe contenere tutta la logica per mutare lo stato dato. Ma è delle migliori pratiche per estrarre questa logica di separare le funzioni, invece di scriverlo in linea tra dichiarazioni caso per esempio: '' 'tornare ADDUSERS (CurrentState, azione) -> newState''' – JensDebergh