Discover how a tiny array can save your app from endless loops and crashes!
Why Dependency array usage in React? - Purpose & Use Cases
Imagine you have a React component that fetches data when it loads and updates the UI. You try to run the fetch code inside a useEffect hook but forget to tell React when to re-run it.
So, every time the component updates, the fetch runs again and again, causing endless network calls and slowing down your app.
Without a dependency array, React can't know when to re-run your effect. This leads to repeated runs, wasted resources, and bugs that are hard to track.
Manually controlling when effects run is tricky and error-prone, especially as your app grows.
The dependency array tells React exactly which values to watch. React only re-runs the effect when those values change.
This makes your code efficient, predictable, and easier to maintain.
useEffect(() => {
fetchData();
});useEffect(() => {
fetchData();
}, [userId]);It enables React to run side effects precisely when needed, improving performance and avoiding bugs.
When a user ID changes, you want to fetch new user data. The dependency array lets React know to fetch only when the user ID changes, not on every render.
Dependency arrays control when effects run.
They prevent unnecessary or infinite effect executions.
Using them correctly makes your app faster and more reliable.
Practice
[] in a useEffect hook mean?Solution
Step 1: Understand the role of dependency array
The dependency array tells React when to run the effect based on changes in listed variables.Step 2: Interpret empty array meaning
An empty array means no variables to watch, so React runs the effect only once after the first render.Final Answer:
The effect runs only once after the first render. -> Option DQuick Check:
Empty array = run once [OK]
- Thinking empty array runs effect every render
- Confusing empty array with no array
- Assuming effect never runs with empty array
useEffect hook that runs only once after the component mounts?Solution
Step 1: Identify correct useEffect syntax
The second argument is the dependency array controlling when the effect runs.Step 2: Check which option uses empty array
useEffect(() => { console.log('Hello'); }, []); uses an empty array, so effect runs once after mount, which is correct.Final Answer:
useEffect(() => { console.log('Hello'); }, []); -> Option BQuick Check:
Empty array syntax = useEffect(() => { console.log('Hello'); }, []); [OK]
- Omitting dependency array runs effect every render
- Using non-constant values in dependency array incorrectly
- Confusing dependency array with effect callback
const [count, setCount] = useState(0);
useEffect(() => {
console.log('Count is', count);
}, [count]);
setCount(1);
setCount(2);What will be logged to the console?
Solution
Step 1: Understand effect dependency on count
The effect runs after first render (count=0) and whenever count changes.Step 2: Analyze state updates
Two state updates happen quickly: setCount(1) then setCount(2). React batches them, so only final count=2 triggers effect after initial render.Final Answer:
Count is 0, Count is 2 -> Option AQuick Check:
Effect runs on initial and final count change [OK]
- Assuming effect runs for every intermediate state update
- Ignoring batching of state updates
- Thinking effect runs before first render
useEffect usage?const [count, setCount] = useState(0);
useEffect(() => {
console.log(count);
}, []);Solution
Step 1: Check dependency array usage
Empty array means effect runs once after first render only.Step 2: Understand effect behavior with state
Effect logs count only once with initial value, ignoring later count changes.Final Answer:
Effect will run only once and log initial count, ignoring updates. -> Option AQuick Check:
Empty array ignores state changes [OK]
- Thinking effect runs on every count change
- Assuming empty array stops effect from running
- Confusing syntax error with logical error
useEffect that depends on two props: userId and filter. Which dependency array is correct to ensure the effect runs only when these props change?useEffect(() => {
fetchData(userId, filter);
}, ???);Solution
Step 1: Identify variables used inside effect
The effect usesuserIdandfilterinside its callback.Step 2: List all used variables in dependency array
To rerun effect when eitheruserIdorfilterchanges, both must be in the dependency array.Final Answer:
[userId, filter] -> Option CQuick Check:
List all used variables in dependencies [OK]
- Leaving dependency array empty causing stale data
- Including functions that don't change as dependencies
- Listing only some used variables
Ready to prove it?
Pass the test and this pattern moves unknown
