안녕하세요, 코딩하는곰입니다! 😊 오늘은 React에서 useState를 활용해 배열 상태를 관리할 때 필수적으로 알아야 할 “배열 요소 삭제” 방법에 대해 깊이 있게 다루어보려고 합니다. 특히 filter 함수를 활용한 효율적인 제거 방식과 성능 최적화 팁까지, 20년 경력의 리액트 개발자만이 알려줄 수 있는 핵심 노하우를 공개합니다. 리액트 개발자라면 반드시 숙지해야 할 이 기술, 지금 바로 시작해볼까요?
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를 반환하는 요소만으로 새 배열을 생성합니다. 따라서:
🤖 AI와 머신러닝 개발에 관심이 있다면, (자바 기초) 자바 프로그램의 컴파일과 실행 과정 완벽 이해하기를 참고해보세요.
실제 프로젝트에서 흔히 마주치는 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 할당
집중력과 논리적 사고력을 기르고 싶다면, 클래식, 데일리, 스토리 모드가 있는 스도쿠 저니를 설치해보세요.
여러 항목을 한 번에 제거할 때는 Set을 활용하면 효율적입니다.
const deleteMultiple = (idsToDelete) => {const idSet = new Set(idsToDelete);setTodos(todos.filter(todo => !idSet.has(todo.id)));};
함수형 업데이트를 사용하면 최신 상태를 보장하며 성능을 개선할 수 있습니다.
setTodos(prevTodos => prevTodos.filter(todo => todo.id !== id));
실수 방지를 위해 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에서 filter를 활용해 배열 요소를 안전하게 삭제하는 방법부터 고급 패턴까지 살펴보았습니다. 상태 관리의 핵심은 “불변성 유지”라는 점, 꼭 기억해주세요! 😊
여러분의 프로젝트에 바로 적용해보시고, 궁금한 점은 댓글로 남겨주세요. 다음 시간에는 “배열 업데이트 최적화 기법”으로 찾아뵙겠습니다. 코딩하는곰이었습니다! 🐾💻
(추가 질문이나 요청이 있다면 언제든지 알려주세요!)
🛒 장보기 전에 체크하면 유용한 건강식품 추천은, 혜당엔 생기환를 참고해보세요.
