I had succed with this exercice, but I wonder If it’s possible to make it with a state object instead of just State = 0.
This is what I tried to do at the begining:
const INCREMENT = 'increment'; // Define a constant for increment action types
const DECREMENT = 'decrement'; // Define a constant for decrement action types
const counterReducer = (state = {count: 0}, action) => {
switch(action.type) {
case INCREMENT:
return {
count: count + 1
}
case DECREMENT:
return {
count: count - 1
}
default:
return state
}
}; // Define the counter reducer which will increment or decrement the state based on the action it receives
const incAction = () => {
return {
type: INCREMENT
}
}; // Define an action creator for incrementing
const decAction = () => {
return {
type: DECREMENT
}
}; // Define an action creator for decrementing
const store = Redux.createStore(counterReducer); // Define the Redux store here, passing in your reducers
Can you make a reducer that returns an object? Sure, you do it all the time. But does it make sense in this case? It’s a counter, I expect it to be a number. If I had a reducer called userInformationReducer, that is more complex data so I would expect it to be an object. A reducer can return any JS data type.
So, sure, you could make your counter an object. I don’t know why, but you could. But that would change the shape of state so everywhere that consumes that section of state would need to be changed to expect that.
Yes I had also tried this solution but that’s don’t work.
const INCREMENT = 'increment'; // Define a constant for increment action types
const DECREMENT = 'decrement'; // Define a constant for decrement action types
const counterReducer = (state = {count: 0}, action) => {
switch(action.type) {
case INCREMENT:
return {
count: state.count + 1
}
case DECREMENT:
return {
count: state.count - 1
}
default:
return state
}
}; // Define the counter reducer which will increment or decrement the state based on the action it receives
const incAction = () => {
return {
type: INCREMENT
}
}; // Define an action creator for incrementing
const decAction = () => {
return {
type: DECREMENT
}
}; // Define an action creator for decrementing
const store = Redux.createStore(counterReducer); // Define the Redux store here, passing in your reducers"
Well, it isn’t going to pass the tests because the tests are expecting that state leaf to be a number. I’m saying that if you designed your own, from the ground up, you could do that. Your reducer looks right to me.