Ich habe eine Logik, die ich in den Reducer gesetzt habe, von dem ich denke, dass er möglicherweise in die Action gesteckt und weitergegeben werden sollte?Wie teilt man die Logik zwischen Redux Reducern und Action Creators auf?
Ist es die beste Vorgehensweise, diese Art von Material in die Aktionen oder den Reducer zu legen?
Arbeitsbeispiel here.
Reducer Code:
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
}
}
Reduzierer sollten die Logik für die Mutation des Zustands enthalten, aber es ist die beste Vorgehensweise, dies nicht in die switch -Anweisung zu schreiben, sondern die Logik in eine separate Funktion zu extrahieren, die den aktuellen Status übergibt und den neuen Status zurückgibt. Ein tolles Tutorial: http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html#loading-entries – JensDebergh
"Reducers sollte die Logik für die Mutation des Staates enthalten"? – user3224271
Der Reduzierer sollte alle Logik enthalten, um den gegebenen Zustand zu verändern. Aber es ist die beste Vorgehensweise, diese Logik in separate Funktionen zu extrahieren, anstatt sie zwischen case-Anweisungen inline zu schreiben. Beispiel: '' 'addUsers (currentState, action) zurückgeben -> newState''' – JensDebergh