
ReactJS
The updating phase occurs when a component's props or state change, triggering a re-render.
function UpdateExample({ userId }) {
const [count, setCount] = React.useState(0);
// Updates triggered by:
// 1. State change: setCount(count + 1)
// 2. Prop change: userId prop changes
// 3. Parent re-render: if parent updates, this component updates too
return (
<div>
<p>User: {userId}</p>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}1. State or props change detected
2. Component re-renders (function called again)
3. New JSX calculated
4. React compares old and new DOM
5. Only changed elements update in real DOM
6. useEffect dependencies checked
7. Cleanup functions from previous render run
8. New effects runfunction SearchUsers({ query }) {
const [results, setResults] = React.useState([]);
// Run when 'query' changes
React.useEffect(() => {
console.log("Searching for:", query);
searchAPI(query).then(data => {
setResults(data);
});
}, [query]); // Dependency array with 'query'
return (
<ul>
{results.map(r => <li key={r.id}>{r.name}</li>)}
</ul>
);
}function UserDataDisplay({ userId, includeDetails }) {
const [data, setData] = React.useState(null);
React.useEffect(() => {
// Run when userId OR includeDetails changes
console.log("Fetching user data...");
const url = includeDetails
? `/api/users/${userId}/details`
: `/api/users/${userId}`;
fetch(url).then(r => r.json()).then(setData);
}, [userId, includeDetails]); // Watch both dependencies
return <div>{data?.name}</div>;
}function EmailForm() {
const [email, setEmail] = React.useState("");
const [isValid, setIsValid] = React.useState(false);
// Validate when email changes
React.useEffect(() => {
setIsValid(email.includes("@"));
}, [email]);
return (
<div>
<input
value={email}
onChange={(e) => setEmail(e.target.value)}
/>
{isValid ? <p>Valid!</p> : <p>Invalid email</p>}
</div>
);
}function ColorDisplay({ defaultColor }) {
const [color, setColor] = React.useState(defaultColor);
// Sync internal state with prop changes
React.useEffect(() => {
setColor(defaultColor);
}, [defaultColor]);
return <div style={{ backgroundColor: color }} />;
}function ChatWindow({ conversationId }) {
const [messages, setMessages] = React.useState([]);
React.useEffect(() => {
// Load messages when conversation changes
loadMessages(conversationId).then(setMessages);
}, [conversationId]);
return (
<ul>
{messages.map(m => <li key={m.id}>{m.text}</li>)}
</ul>
);
}| Dependency Array | When Effect Runs |
|---|---|
| No array | Every render (avoid!) |
| `[]` | Once on mount only |
| `[a, b]` | When a or b changes |
| `[id]` | Only when id changes |
Resources
Ojasa Mirai
Master AI-powered development skills through structured learning, real projects, and verified credentials. Whether you're upskilling your team or launching your career, we deliver the skills companies actually need.
Learn Deep • Build Real • Verify Skills • Launch Forward