나는 redux에 새로 왔으며 전적으로 redux 응용 프로그램을 만들려고합니다. 내가 가지고있는 문제는 내 감속기가 내 가게를 업데이트하지 않는다는 것입니다. 나는 감속기에있는 상점을 돌연변이하려는 경우 내 변화를 볼 것입니다. 나는 그것이 나쁜 습관이라는 것을 알고 있습니다. 그래서 그것을 돌연변이시키지 않고 업데이트하려고합니다.하지만 콘솔을 볼 때. 나는 국가에 변화가없는 것을보고있다. 감속기가 상점을 업데이트하지 않는 이유를 알아낼 수 있습니까? 여기 내 리 듀서가 내 스토어를 업데이트하지 않는 이유는 무엇입니까?
store.subscribe(() => {
console.log("store changed", store.getState());
});
내 감속기입니다 :
이
내 작업입니다store.dispatch({type: "DEDUCT", payload: [
{
"itemName": "banana",
"quantityRemaining": 1
},
{
"itemName": "apple",
"quantityRemaining": 1
},
{
"itemName": "strawberries",
"quantityRemaining": 1
}
]});
: 아래
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;
}
내 디스패처의 예입니다 (나는 같은 일을하고 두 가지를 만들었습니다)
그래서'action.fruits.map()'의 닫는 중괄호 앞에'actionFruit'을 반환하겠습니까? 나는 그것을 시도했고 감속기는 여전히 상태를 업데이트하지 않고있다. –