Step 1: Set Up the Reducer Function
Counter.jsx component, replace the useState hook with useReducer.
const counterReducer = (state, action) => {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
default:
return state;
}
};
Step 2: Initialize State with useReducer
Counter component’s state using useReducer instead of useState.
import React, { useReducer } from 'react';
const Counter = () => {
const [state, dispatch] = useReducer(counterReducer, { count: 0 });
return (
<div>
<h2>Counter</h2>
<p>Count: {state.count}</p>
<button onClick={() => dispatch({ type: 'increment' })}>Increment</button>
<button onClick={() => dispatch({ type: 'decrement' })}>Decrement</button>
</div>
);
};
export default Counter;
Step 3: Test the Component
Counter component in App.jsx.useReducer hook is correctly managing the component’s state.Step 4: Extend the Reducer
reset, to reset the count to 0.Counter component and dispatch the reset action when it is clicked.
const counterReducer = (state, action) => {
switch (action.type) {
case 'increment':
return { count: state.count + 1 };
case 'decrement':
return { count: state.count - 1 };
case 'reset':
return { count: 0 };
default:
return state;
}
};