Instructions
Type the passage exactly as shown. Preserve capitalization, indentation, line breaks, brackets, quotes, commas, semicolons, JSX syntax, and spacing. Prioritize accuracy first, then improve your typing speed.
react-hooks-component-typing
import React, { useState, useEffect, useCallback, useMemo } from 'react';↵
↵
function Counter({ initial = 0 }) {↵
const [count, setCount] = useState(initial);↵
↵
const increment = useCallback(() => {↵
setCount(current => current + 1);↵
}, []);↵
↵
const decrement = useCallback(() => {↵
setCount(current => current - 1);↵
}, []);↵
↵
useEffect(() => {↵
const timer = setInterval(increment, 1000);↵
↵
return () => {↵
clearInterval(timer);↵
};↵
}, [increment]);↵
↵
const status = useMemo(() => {↵
return count % 2 === 0 ? 'Even' : 'Odd';↵
}, [count]);↵
↵
return (↵
<section className="counter">↵
<h1>Count: {count}</h1>↵
<p>Status: {status}</p>↵
↵
<button type="button" onClick={decrement}>↵
Decrease↵
</button>↵
↵
<button type="button" onClick={increment}>↵
Increase↵
</button>↵
</section>↵
);↵
}↵
↵
export default Counter;
import React, { useState, useEffect, useCallback, useMemo } from 'react';↵
↵
function Counter({ initial = 0 }) {↵
const [count, setCount] = useState(initial);↵
↵
const increment = useCallback(() => {↵
setCount(current => current + 1);↵
}, []);↵
↵
const decrement = useCallback(() => {↵
setCount(current => current - 1);↵
}, []);↵
↵
useEffect(() => {↵
const timer = setInterval(increment, 1000);↵
↵
return () => {↵
clearInterval(timer);↵
};↵
}, [increment]);↵
↵
const status = useMemo(() => {↵
return count % 2 === 0 ? 'Even' : 'Odd';↵
}, [count]);↵
↵
return (↵
<section className="counter">↵
<h1>Count: {count}</h1>↵
<p>Status: {status}</p>↵
↵
<button type="button" onClick={decrement}>↵
Decrease↵
</button>↵
↵
<button type="button" onClick={increment}>↵
Increase↵
</button>↵
</section>↵
);↵
}↵
↵
export default Counter;