scrimba
Reusable React
Reducers
Reducers Exercise 1: Expanding our reducer function
Go Pro!Bootcamp

Bootcamp

Study group

Collaborate with peers in your dedicated #study-group channel.

Code reviews

Submit projects for review using the /review command in your #code-reviews channel

Reducers Exercise 1: Expanding our reducer function
AboutCommentsNotes
Reducers Exercise 1: Expanding our reducer function
Expand for more info
index.js
run
preview
console
import React, { useState, useReducer } from 'react';
import ReactDOM from 'react-dom';

let initialState = { count: 0 }

let actions = [
{ type: 'ADD', by: 2 },
{ type: 'MINUS', by: 4 },
{ type: 'ADD', by: 10 }
]

function reducer(state, action) {
if (action.type === "ADD") {
return { ...state, count: state.count + action.by }
} else if (action.type === "MINUS") {
return { ...state, count: state.count - action.by }
}
return state
}

console.log(actions.reduce(reducer, initialState))

const App = () => {
const [count, setCount] = useState(0)

const add = () => {
setCount(count + 1)
}

const subtract = () => {
if (count > 0) {
setCount(count - 1)
}
}

return (
<section>
<h2>Counter: The Most Novel Example I Could Come Up With</h2>
<div className="counter">
<button onClick={subtract}>-</button>
<div>{count}</div>
<button onClick={add}>+</button>
</div>
</section>
)
}
ReactDOM.render(<App />, document.getElementById('root'));
Console
15
,
{count:
8
}
,
/index.html?
-3:10