Je suis nouveau à redux et j'essaie de créer une application uniquement redux. Le problème que j'ai est que mon réducteur ne mettra pas à jour mon magasin. Si je devais muter le magasin dans le réducteur alors je verrais mon changement. Je sais que c'est une mauvaise pratique, alors j'essaie de le mettre à jour sans le faire muter, mais quand je regarde la console. Je ne vois aucun changement à l'état. Quelqu'un peut-il m'aider à comprendre pourquoi le réducteur ne met pas à jour le magasin?Pourquoi mon réducteur ne met-il pas à jour mon magasin?
C'est mon action:
store.subscribe(() => {
console.log("store changed", store.getState());
});
Voici mon réducteur:
const fruitReducer = function(state={
fruits: [
{
"itemName": "banana",
"price": 1.00,
"quantityRemaining": 10
},
{
"itemName": "apple",
"price": 2.00,
"quantityRemaining": 5
},
{
"itemName": "raspberry",
"price": 5.00,
"quantityRemaining": 2
},
{
"itemName": "kiwi",
"price": 3.00,
"quantityRemaining": 15
},
{
"itemName": "pineapple,
"price": 7.00,
"quantityRemaining": 1
},
{
"itemName": "strawberries",
"price": 2.00,
"quantityRemaining": 3
}
]
}, action){
if(action.type === "DEDUCT"){
return Object.assign({}, state, {
fruits: state.fruits.map((fruit, index) => {
action.payload.map((actionFruit) => {
if(fruit.itemName === actionFruit.itemName){
let newQuantity = fruit.quantityRemaining - actionFruit.quantityRemaining;
return Object.assign({}, fruit, {
quantityRemaining: newQuantity
});
}
});
return fruit;
})
});
}
else
return state;
}
Voici un exemple de mes dispatchers (j'ai créé deux faire la même chose):
store.dispatch({type: "DEDUCT", payload: [
{
"itemName": "banana",
"quantityRemaining": 1
},
{
"itemName": "apple",
"quantityRemaining": 1
},
{
"itemName": "strawberries",
"quantityRemaining": 1
}
]});
Donc, est-ce que je retournerais 'actionFruit', avant l'accolade de fermeture sur' action.fruits.map() '? J'ai essayé cela et le réducteur ne met toujours pas à jour l'état. –