Compare adaptive deferral with fixed-time debounce/throttle.
01
01
Understand the problem
reactconcurrentperformance
02
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Stuck? AI Nudge Available
Get a conceptual hint to guide your logic without spoiling the final implementation.
03
03
Study the solution
The solution is waiting
Give it an honest attempt first — then compare your thinking with the full walkthrough.
04
04
Explore the playground snippets
Deferred value driving an expensive list
Run Playgroundimport { useState, useDeferredValue, useMemo } from 'react';
function SlowList({ text }) {
const items = useMemo(() => {
const out = [];
for (let i = 0; i < 3000; i++) out.push(text + ' #' + i);
return out;
}, [text]);
return <ul style={{ maxHeight: 160, overflow: 'auto' }}>{items.slice(0, 40).map((x) => <li key={x}>{x}</li>)}</ul>;
}
export default function App() {
const [text, setText] = useState('a');
const deferred = useDeferredValue(text);
const stale = text !== deferred;
return (
<div style={{ fontFamily: 'sans-serif', padding: 24 }}>
<input value={text} onChange={(e) => setText(e.target.value)} placeholder="Type fast" />
<span style={{ opacity: stale ? 1 : 0, marginLeft: 8, color: '#888' }}>rendering…</span>
<SlowList text={deferred} />
</div>
);
}05
05
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.