53 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: Write a Counter with Redux
 | 
						|
---
 | 
						|
## Write a Counter with Redux
 | 
						|
 | 
						|
The goal of this challenge is to apply all the concepts learned from previous Redux challenges and create a simple counter that will increment or decrement a state by 1. 
 | 
						|
 | 
						|
### Hint 1
 | 
						|
The best way to solve this challenge is by reviewing previous redux lessons particularly the following:
 | 
						|
- [Use const for Action Types](https://learn.freecodecamp.org/front-end-libraries/redux/use-const-for-action-types/)
 | 
						|
- [Use a Switch Statement to Handle Multiple Actions](https://learn.freecodecamp.org/front-end-libraries/redux/use-a-switch-statement-to-handle-multiple-actions/)
 | 
						|
- [Define an Action Creator](https://learn.freecodecamp.org/front-end-libraries/redux/define-an-action-creator/)
 | 
						|
- [Handle an Action in the Store](https://learn.freecodecamp.org/front-end-libraries/redux/handle-an-action-in-the-store/)
 | 
						|
- [Create a Redux Store](https://learn.freecodecamp.org/front-end-libraries/redux/create-a-redux-store)
 | 
						|
 | 
						|
### Solution
 | 
						|
```javascript
 | 
						|
const INCREMENT = 'INCREMENT'; // define a constant for increment action types
 | 
						|
const DECREMENT = 'DECREMENT'; // define a constant for decrement action types
 | 
						|
 | 
						|
// define the counter reducer which will increment or decrement the state based on the action it receives
 | 
						|
const counterReducer = (state = 0, action) => {
 | 
						|
    switch(action.type){
 | 
						|
        case INCREMENT: 
 | 
						|
            return state+=1;          
 | 
						|
 | 
						|
        case DECREMENT: 
 | 
						|
            return state-=1;                
 | 
						|
            
 | 
						|
        default:
 | 
						|
            return state;
 | 
						|
    }
 | 
						|
} ; 
 | 
						|
 | 
						|
// define an action creator for incrementing
 | 
						|
const incAction = () => { 
 | 
						|
    return {
 | 
						|
        type: INCREMENT
 | 
						|
    }
 | 
						|
}; 
 | 
						|
 | 
						|
// define an action creator for decrementing
 | 
						|
const decAction = () => { 
 | 
						|
    return {
 | 
						|
        type: DECREMENT
 | 
						|
    }
 | 
						|
}; 
 | 
						|
 | 
						|
// define the Redux store here, passing in your reducers
 | 
						|
const store = Redux.createStore(counterReducer); 
 | 
						|
```
 | 
						|
<!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds  -->
 |