Home

(React) useState로 배열 삭제하기 - filter 함수 활용 가이드

Published in react
May 16, 2025
1 min read
(React) useState로 배열 삭제하기 - filter 함수 활용 가이드

안녕하세요, 코딩하는곰입니다! 😊 오늘은 React에서 useState를 활용해 배열 상태를 관리할 때 필수적으로 알아야 할 “배열 요소 삭제” 방법에 대해 깊이 있게 다루어보려고 합니다. 특히 filter 함수를 활용한 효율적인 제거 방식과 성능 최적화 팁까지, 20년 경력의 리액트 개발자만이 알려줄 수 있는 핵심 노하우를 공개합니다. 리액트 개발자라면 반드시 숙지해야 할 이 기술, 지금 바로 시작해볼까요?

1. 왜 filter를 사용해야 할까?

배열에서 요소를 제거할 때 가장 흔히 하는 실수는 splice나 직접적인 배열 변조를 시도하는 것입니다. 하지만 React의 상태 불변성 원칙(Immutability)에 따라 기존 배열을 변경하지 않고 새 배열을 생성해야 합니다. 이때 filter 함수가 빛을 발하는데요,

const [items, setItems] = useState([1, 2, 3, 4]);
// 삭제할 요소(id=2) 제외한 새 배열 생성
const handleDelete = (id) => {
setItems(items.filter(item => item !== id));
};

filter는 콜백 함수가 true를 반환하는 요소만으로 새 배열을 생성합니다. 따라서:

  1. 불변성 유지: 원본 배열을 건드리지 않음
  2. 선언적 프로그래밍: “어떤 요소를 제거할지”만 정의
  3. 성능 최적화: O(n) 시간 복잡도로 효율적

(React) useState로 배열 삭제하기 - filter 함수 활용 가이드
(React) useState로 배열 삭제하기 - filter 함수 활용 가이드


🤖 AI와 머신러닝 개발에 관심이 있다면, (자바 기초) 자바 프로그램의 컴파일과 실행 과정 완벽 이해하기를 참고해보세요.

2. 실전 적용 사례 - Todo 리스트

실제 프로젝트에서 흔히 마주치는 Todo 리스트 삭제 기능을 구현해보겠습니다.

function TodoList() {
const [todos, setTodos] = useState([
{ id: 1, text: "리액트 학습" },
{ id: 2, text: "블로그 작성" }
]);
const deleteTodo = (id) => {
setTodos(todos.filter(todo => todo.id !== id));
// 참고: 실제 프로젝트에서는 ID 비교 시 === 사용 권장
};
return (
<ul>
{todos.map(todo => (
<li key={todo.id}>
{todo.text}
<button onClick={() => deleteTodo(todo.id)}>삭제</button>
</li>
))}
</ul>
);
}

주의사항:

  • key Prop: 재렌더링 시 성능을 위해 고유 key 할당
  • 안티패턴: 인덱스를 key로 사용하면 삭제 시 문제 발생
  • 최적화: 대규모 리스트엔 React.memo 또는 가상화 적용

(React) useState로 배열 삭제하기 - filter 함수 활용 가이드
(React) useState로 배열 삭제하기 - filter 함수 활용 가이드


집중력과 논리적 사고력을 기르고 싶다면, 클래식, 데일리, 스토리 모드가 있는 스도쿠 저니를 설치해보세요.

3. 고급 패턴과 성능 개선

3.1. 다중 선택 삭제

여러 항목을 한 번에 제거할 때는 Set을 활용하면 효율적입니다.

const deleteMultiple = (idsToDelete) => {
const idSet = new Set(idsToDelete);
setTodos(todos.filter(todo => !idSet.has(todo.id)));
};

3.2. 상태 업데이트 최적화

함수형 업데이트를 사용하면 최신 상태를 보장하며 성능을 개선할 수 있습니다.

setTodos(prevTodos => prevTodos.filter(todo => todo.id !== id));

3.3. 삭제 Undo 기능 구현

실수 방지를 위해 5초간 삭제 취소 가능한 기능 추가:

const [deletedItem, setDeletedItem] = useState(null);
const handleDelete = (id) => {
const item = todos.find(t => t.id === id);
setTodos(todos.filter(t => t.id !== id));
setDeletedItem(item);
setTimeout(() => setDeletedItem(null), 5000);
};

(React) useState로 배열 삭제하기 - filter 함수 활용 가이드
(React) useState로 배열 삭제하기 - filter 함수 활용 가이드


공부나 업무에 몰입할 때는 별도 설치 없이 바로 실행 가능한 온라인 스톱워치를 이용해보세요.

오늘은 React에서 filter를 활용해 배열 요소를 안전하게 삭제하는 방법부터 고급 패턴까지 살펴보았습니다. 상태 관리의 핵심은 “불변성 유지”라는 점, 꼭 기억해주세요! 😊
여러분의 프로젝트에 바로 적용해보시고, 궁금한 점은 댓글로 남겨주세요. 다음 시간에는 “배열 업데이트 최적화 기법”으로 찾아뵙겠습니다. 코딩하는곰이었습니다! 🐾💻
(추가 질문이나 요청이 있다면 언제든지 알려주세요!)

🛒 장보기 전에 체크하면 유용한 건강식품 추천은, 혜당엔 생기환를 참고해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#react

Share

Previous Article
Vue로 SPA 개발시 꼭 알아야 할 상태관리와 컴포넌트 설계 핵심

Related Posts

React 18의 주요 변화 완벽 가이드 자동 배치, 트랜지션, 동시성 기능까지
December 14, 2025
3 min