Исходное состояние магазина:
let initialState = {
items: [],
itemsCount: 0,
completedCount: 0
};
Когда я отправляю действие с типом ADD_ITEM
, новый элемент добавляется в массив items
и itemsCount
увеличивается (хотя я не уверен, правильно ли я это делаю)
case "ADD_ITEM": {
return {
...state,
items: [
...state.items,
{
title: action.name,
dateCreated: action.date,
id: action.id,
isChecked: false
}
],
itemsCount: state.items.length + 1
};
}
и для TOGGLE_ITEM
case "TOGGLE_ITEM": {
return Object.assign({}, state, {
items: state.items.map(item => {
if (item.id !== action.id) {
return item;
}
return Object.assign({}, item, {
isChecked: !item.isChecked
});
})
});
}
Когда я отправляю действие с типом REMOVE_ITEM
, выполняется следующее:
case "REMOVE_ITEM": {
return Object.assign({}, state, {
items: [...state.items.filter(item => item.id !== action.id)],
itemsCount: state.items.length - 1
});
}
Теперь я пытаюсь сосчитать предметы, у которых isChecked
равно true
state.items.map(item => {
if(item.isChecked){
//Increment count
}
})
Я не уверен, где именно это сделать.
Внутри действия TOGGLE_ITEM
?
Внутри нового COUNT_ITEM
экшена? если да, то когда это действие отправлено?
А как назначить увеличенную цифру части состояния?