What React hook is used to run code after the component first renders?
The <code>useEffect</code> hook with an empty dependency array (<code>[]</code>) runs code after the first render, similar to <code>componentDidMount</code> in class components.
Click to reveal answer
beginner
How do you run cleanup code when a React component unmounts using hooks?
Inside useEffect, return a function. This returned function runs when the component unmounts, similar to componentWillUnmount.
Click to reveal answer
intermediate
Which hook replaces componentDidUpdate behavior?
The useEffect hook runs after every render by default. To mimic componentDidUpdate, use useEffect with specific dependencies to run code when those values change.
Click to reveal answer
beginner
What does the dependency array in useEffect control?
The dependency array tells React when to re-run the effect. If empty ([]), it runs once after mount. If it has variables, it runs when those variables change.
Click to reveal answer
intermediate
How can you run code only when a specific prop or state changes in a functional component?
Use useEffect with that prop or state in the dependency array. React runs the effect only when those values change.
Click to reveal answer
Which hook is primarily used to handle lifecycle events in React functional components?
AuseState
BuseRef
CuseContext
DuseEffect
✗ Incorrect
useEffect is used to run code on mount, update, and unmount, replacing lifecycle methods.
What happens if you omit the dependency array in useEffect?
AEffect runs only once after mount
BEffect runs after every render
CEffect never runs
DEffect runs only on unmount
✗ Incorrect
Without dependencies, useEffect runs after every render.
How do you run cleanup code when a component unmounts?
AReturn a function inside <code>useEffect</code>
BUse <code>useState</code> to reset values
CCall cleanup in the component body
DUse <code>useRef</code> to track unmount
✗ Incorrect
Returning a function inside useEffect runs that function on unmount.
To run an effect only when a specific state changes, what should you do?
ADo not use <code>useEffect</code>
BLeave the dependency array empty
CAdd that state to the dependency array
DUse <code>useState</code> instead
✗ Incorrect
Adding the state to the dependency array triggers the effect only when it changes.
Which lifecycle method does useEffect(() => {}, []) mimic?
AcomponentDidMount
BcomponentWillUnmount
CcomponentDidUpdate
Drender
✗ Incorrect
An empty dependency array runs the effect once after the component mounts.
Explain how you can use React hooks to mimic the lifecycle methods: componentDidMount, componentDidUpdate, and componentWillUnmount.
Think about how useEffect runs after render and how dependencies control when it runs.
You got /3 concepts.
Describe the role of the dependency array in the useEffect hook and how it affects when the effect runs.
Consider how React decides when to re-run the effect.
You got /3 concepts.
Practice
(1/5)
1. Which React hook is used to run code after a component renders, replacing lifecycle methods like componentDidMount and componentDidUpdate?
easy
A. useEffect
B. useState
C. useContext
D. useRef
Solution
Step 1: Understand lifecycle replacement
The useEffect hook runs code after rendering, replacing lifecycle methods like componentDidMount and componentDidUpdate.
Step 2: Identify the correct hook
useState manages state, useContext accesses context, and useRef stores mutable values. Only useEffect runs side effects after render.
Final Answer:
useEffect -> Option A
Quick Check:
Effect hook = useEffect [OK]
Hint: useEffect runs code after render like lifecycle methods [OK]
Common Mistakes:
Confusing useState with useEffect
Thinking useRef runs effects
Believing useContext triggers after render
2. Which of the following is the correct syntax to run an effect only once when a React component mounts using useEffect?
easy
A. useEffect(() => { /* code */ }, null);
B. useEffect(() => { /* code */ });
C. useEffect(() => { /* code */ }, true);
D. useEffect(() => { /* code */ }, []);
Solution
Step 1: Understand dependency array usage
Passing an empty array [] as the second argument to useEffect makes it run only once after the first render (component mount).
Step 2: Analyze each option
useEffect(() => { /* code */ }); runs after every render. useEffect(() => { /* code */ }, true); runs after every render since non-array dependencies are ignored. useEffect(() => { /* code */ }, null); with null also runs after every render as it's not an array.
Final Answer:
useEffect(() => { /* code */ }, []); -> Option D
Quick Check:
Empty array = run once [OK]
Hint: Empty dependency array runs effect once on mount [OK]
Common Mistakes:
Omitting dependency array causes effect every render
Using null instead of empty array
Passing non-array values like true or null as dependencies
3. What will be logged to the console when the following React component mounts and then the count state changes?
C. Logs 'Count is 0' on mount and 'Count is 1' after first click
D. Logs nothing because useEffect has dependencies
Solution
Step 1: Understand useEffect with dependency
The effect runs after the component mounts and whenever count changes because count is in the dependency array.
Step 2: Trace the console logs
On mount, count is 0, so it logs 'Count is 0'. After clicking the button, count becomes 1, triggering the effect again and logging 'Count is 1'.
Final Answer:
Logs 'Count is 0' on mount and 'Count is 1' after first click -> Option C
Quick Check:
Effect runs on mount and dependency change [OK]
Hint: Effect runs on mount and when dependencies change [OK]
Common Mistakes:
Thinking effect runs only once without dependencies
Assuming no logs because dependencies exist
Confusing useEffect with setInterval
4. Identify the problem in this React component that uses useEffect and suggest the fix:
function Timer() {
React.useEffect(() => {
const id = setInterval(() => console.log('Tick'), 1000);
}, []);
return <div>Timer</div>;
}
medium
A. No problem; code works fine as is
B. Missing cleanup function to clear the interval on unmount
C. Dependency array should include 'id' to update interval
D. setInterval should be replaced with setTimeout
Solution
Step 1: Analyze effect side effects
The effect sets an interval but does not clear it, causing a memory leak when the component unmounts.
Step 2: Suggest cleanup function
Return a cleanup function from useEffect that calls clearInterval(id) to stop the interval on unmount.
Final Answer:
Missing cleanup function to clear the interval on unmount -> Option B
Quick Check:
Cleanup prevents memory leaks [OK]
Hint: Always clean intervals/timeouts in useEffect cleanup [OK]
Common Mistakes:
Forgetting to clear intervals causing leaks
Adding dependencies unnecessarily
Replacing setInterval with setTimeout incorrectly
5. You want to fetch user data only once when a component mounts and cancel the fetch if the component unmounts before it finishes. Which is the best way to implement this using useEffect?