Declarative UI
In declarative UI, you declare the desired UI state directly rather than issuing imperative step-by-step DOM mutations.
Mental Model
"The GPS: You tell your navigation system the destination address (state), and it calculates all turns automatically rather than you driving blindfolded."
Interactive Engine Simulation
React handles the DOM manipulations. You only describe the state.
Executable Code Snippet
1function Toggle() {
2 const [isOn, setIsOn] = useState(false);
3
4 // DECLARATIVE: Describe WHAT the UI looks like
5 // in both possible states. React handles the HOW.
6 return (
7 <button onClick={() => setIsOn(!isOn)}>
8 {isOn ? 'ON' : 'OFF'}
9 </button>
10 );
11}- 01.Component re-renders are triggered by state or prop changes.
- 02.Reconciliation algorithm diffs the Virtual DOM to minimize actual DOM updates.
- 03.Automatic batching optimizes multiple state updates into a single render cycle.
01. The Mental Shift
Imperative programming is like giving a taxi driver **turn-by-turn directions**: "Go 100m, turn left, wait for the light." If you miss one step, you're lost. Declarative programming is like giving the driver an **address**: "Take me to 123 React St." The driver (React) figures out the best way to get there.
Imperative Nightmare
"As the app grows, the number of manual DOM updates grows exponentially. Missing just one 'remove-class' call leads to ghost UI states and difficult bugs."
02. State as the Source of Truth
In a declarative UI, you don't "update the header." You "update the state," and the header observes that state change. This decoupling is what makes React components so easy to test—you test the logic (state) and the view (JSX) separately.
Key Takeaway
Stop thinking about **events**. Start thinking about **states**. An event is just a trigger to transition from State A to State B.