← 문제 목록
고급
React
100P
useMemo 참조 동등성 함정
필터가 변경되지 않아도 ExpensiveList가 매번 리렌더링됩니다. 버그를 찾으세요:
JSX
function Dashboard() {
const [count, setCount] = useState(0);
const [filter, setFilter] = useState('all');
const filteredItems = useMemo(() => {
return items.filter(item => {
if (filter === 'all') return true;
return item.category === filter;
});
}, [filter]);
const handlers = {
onSelect: (id) => console.log(id),
onDelete: (id) => console.log('delete', id),
};
return (
<div>
<button onClick={() => setCount(c => c + 1)}>Count: {count}</button>
<ExpensiveList items={filteredItems} handlers={handlers} />
</div>
);
}
const ExpensiveList = React.memo(({ items, handlers }) => {
console.log('ExpensiveList 렌더링');
return <ul>{items.map(i => <li key={i.id}>{i.name}</li>)}</ul>;
});
0명 풀이 · 정답률 0%