[React] 3. List CRUD

문정준's avatar
Aug 20, 2025
[React] 3. List CRUD

리스트를 다루는 방법

1) 스칼라 값 (일반 리스트)

// 불변 리스트 (scala) let list = [1, 2, 3, 4, 5]; // 1. 추가 let t1 = [0, ...list, 6]; console.log(t1); // 2. 검색 let t2 = list.filter(item => item > 3); console.log(t2); // 3. 삭제 let t3 = list.filter(item => item !== 5); console.log(t3); // 4. 수정 let t4 = list.map(item => item * 2); console.log(t4);
💡

리스트 활용

  • 리스트를 다루기 위해서는 JS 함수 외에도 전개 연산자를 함께 활용
    • 배열을 직접 바꾸는 것이 아닌 내부 데이터만 복사하는 깊은 복사 : OCP 정책 확보
  1. 추가 : 전개 연산자 활용 → 앞 또는 뒤에 추가할 요소를 덧붙여 다시 감싸서 복사
  1. 검색 및 삭제 : filter()
      • 검색 : 조건에 해당하는 값만 찾음
      • 삭제 : 조건에 해당하지 않는 값만 찾음 ⇒ 조건에 해당하는 값은 찾지 않음
        • 3 이상 값을 삭제하고 싶다면 3 미만의 값만 찾아야 함
  1. 수정 : map()
      • 내부 데이터를 가공해서 다시 배열로 감쌈
notion image
 

2) JS Object

// 불변 리스트 (JS Object) let list = [ { id: 1, name: '홍길동', age: 20, addr: '서울', tel: '010-1111-1111' }, { id: 2, name: '이순신', age: 30, addr: '부산', tel: '010-2222-2222' }, { id: 3, name: '강감찬', age: 40, addr: '대전', tel: '010-3333-3333' }, ]; // 1. 추가 let t1 = [...list, { id: 4, name: '유관순', age: 50 }]; console.log(t1); // 2. 검색 let t2 = list.filter(item => item.name === '이순신'); console.log(t2); // 3. 삭제 let t3 = list.filter(item => item.age >= 30); console.log(t3); // 4. 수정 (id : 3인 사람의 나이를 70) let t4 = list.map(item => { if (item.id != 3) return item; else return { ...item, age: 70 }; }); // 가능은 하지만 잘못된 코드 (Object 내부의 item 값을 직접 수정) // let t41 = list.map(item => { // if (item.id != 3) return item; // else { // item.age = 70; // return item; // } // }); console.log(t4); // console.log(t41); // 5. 수정 (2) (id = 3인 사람의 주소를 제주로 변경) let t5 = list.map(item => (item.id === 3 ? { ...item, addr: '제주' } : item)); console.log(t5);
💡

JS Object의 차이점

  • JS Object는 객체 내부에 키와 value를 동시에 여러 개 가질 수 있음
    • 해당 객체의 값 자체가 아닌, 객체의 키의 값을 비교해야 할 경우 수정이 복잡해짐
  • 배열의 내부를 직접 수정하면 안 됨 : 상태에 직접 접근해서 값을 변경하면 동기화 오류 발생
  • CRUD 방법은 위와 동일하나, 돌려주는 대상이 일반 값에서 객체로 변경됨
    • 수정할 때에는 전개 연산자를 활용한 복사된 객체를 돌려주어야 함
notion image
Share article

sxias