38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Extract State Logic to Redux | ||
|  | --- | ||
|  | ## Extract State Logic to Redux
 | ||
|  | 
 | ||
|  | This is a stub. <a href='https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/front-end-libraries/react-and-redux/extract-state-logic-to-redux/index.md' target='_blank' rel='nofollow'>Help our community expand it</a>. | ||
|  | 
 | ||
|  | <a href='https://github.com/freecodecamp/guides/blob/master/README.md' target='_blank' rel='nofollow'>This quick style guide will help ensure your pull request gets accepted</a>. | ||
|  | 
 | ||
|  | <!-- The article goes here, in GitHub-flavored Markdown. Feel free to add YouTube videos, images, and CodePen/JSBin embeds  --> | ||
|  | 
 | ||
|  | Suggested solution:  | ||
|  | 
 | ||
|  | ```javascript | ||
|  | const ADD = 'ADD'; | ||
|  | 
 | ||
|  | function addMessage(message) { | ||
|  |   return { | ||
|  |     type: ADD, | ||
|  |     message: message | ||
|  |   }; | ||
|  | }; | ||
|  | 
 | ||
|  | function messageReducer (previousState, action) { | ||
|  |   return [...previousState, action.message]; | ||
|  | } | ||
|  | 
 | ||
|  | let store = { | ||
|  |   state: [], | ||
|  |   getState: () => store.state, | ||
|  |   dispatch: (action) => { | ||
|  |     if (action.type === ADD) { | ||
|  |       store.state = messageReducer(store.state, action); | ||
|  |     } | ||
|  |   } | ||
|  | }; | ||
|  | ``` |