Reputation: 6123
Normally I see stuff like this on a Reducer:
const initialState = {
thisIsBoolean: false,
};
const handlers = {
[ActionTypes.CARD_SELECTED](state, action) {
return {
...state,
thisIsBoolean: !state.thisIsBoolean,
};
},
};
export default createReducer(initialState, handlers);
Action:
export const booleanExample = () => ({
type: ActionTypes.CARD_SELECTED,
});
But I need to do something like this now: Reducer:
const initialState = {
stepOneCardSelected: [
{ index: 0, isDone: false },
{ index: 1, isDone: false },
{ index: 2, isDone: false },
{ index: 3, isDone: false },
],
};
const handlers = {
[ActionTypes.CARD_SELECTED](state, action) {
return {
...state,
stepOneCardSelected: action.payload.stepOneCardSelected,
};
},
}
Action:
export const stepOneCardSelectedAction = stepOneCardSelected => ({
type: ActionTypes.CARD_SELECTED,
payload: { stepOneCardSelected },
});
So I need to do something to return the state and toggle the isDone
property within stepOneCardSelected
.
What can I do?
Upvotes: 0
Views: 182
Reputation: 37755
You can map through your selectedCard
in state and toggle isDone
const initialState = {
stepOneCardSelected: [
{ index: 0, isDone: false },
{ index: 1, isDone: false },
{ index: 2, isDone: false },
{ index: 3, isDone: false },
],
};
const handlers = {
[ActionTypes.CARD_SELECTED](state, action) {
return {
...state,
stepOneCardSelected: state.stepOneCardSelected.map(({index,isDone})=>({index,isDone: !isDone}))
};
},
}
Upvotes: 1