일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Armhole Drop
- 나일론지퍼
- 와끼
- 비슬론지퍼
- MERN스택
- 고급영어단어
- 요척합의
- 웹API
- 우레탄지퍼
- AATCC
- 슈퍼코딩
- 엑셀자동서식
- 자켓실측
- 헤이큐
- 핸드캐리쿠리어차이점
- TACKING
- 지연환가료
- 40HQ컨테이너
- 클린코드
- 엑셀드래그단축키
- 40HQ컨테이너40GP컨테이너차이
- 엑셀필터복사붙여넣기
- 암홀트롭
- 영어시간읽기
- 미국영어연음
- WHATTIMEOFTHEDAY
- 비리짐
- 봉제용어
- 필터링후복사붙여넣기
- 미니마카
- Today
- Total
CASSIE'S BLOG
동적이름을 속성으로 정하고 싶을 때 쓰는 [] 본문
개인 프로젝트를 하다가 동적이름을 속성으로 정하고싶을 떄 [] 이거를 쓰라는 내용을 인터넷에서 찾았다.
🎈 이벤트 객체에서 e 전달받음
🎈 e.target.name: 해당 이벤트가 발생한 요소의 name 속성을 가져옵니다. 이 부분에서 [e.target.name]은 동적 속성 이름(dynamic property name)을 사용하고 있습니다. 이는 ES6의 계산된 속성 이름(computed property name) 문법입니다. 이렇게 함으로써 여러 필드에 대한 상태를 관리할 수 있습니다.
🎈
...prev 부분은 이전 상태의 내용을 그대로 가져와서 복사하는 부분입니다. 여기서 { [e.target.name]: e.target.value } 부분이 추가되어 새로운 필드를 가진 객체를 만듭니다.
따라서 이 두 부분이 합쳐져서 전체적으로 이전 상태를 복사하면서 새로운 필드를 추가한 상태를 만들어줍니다. 결국, setInputs 함수는 하나의 객체를 반환하게 되며, 이 객체는 이전 상태의 내용을 그대로 가지면서 새로운 필드가 추가된 상태가 됩니다
🎈 콤마를 사용해서 ,를 사용하여 이전 상태의 내용과 새로운 필드를 가진 객체를 합치고 있습니다.
🎈 스프레드 연산자 잘못 이해하고 있었던 것 (불변성을 위해서 렌더링할 때 예측못하는 문제 생길 수도 있어서)
- prev: 이전 상태를 나타내는 변수로서, 예를 들어 { name: 'John', age: 25 }와 같은 객체일 것입니다.
- { ...prev }: 이것은 스프레드 연산자(...)를 사용하여 객체를 복사하는 표현입니다. 이전 상태 prev의 속성들을 펼쳐서 새로운 객체를 만들어내는 것입니다.
예를 들어, prev가 { name: 'John', age: 25 }라면 { ...prev }는 새로운 객체를 생성하여 { name: 'John', age: 25 }와 동일한 속성들을 가지게 됩니다. 이것을 "얕은 복사(shallow copy)"라고 합니다. 기존 객체의 속성들을 그대로 가져와서 복사한 것이므로, 새로운 객체를 수정해도 기존 객체에는 영향을 주지 않습니다.
따라서 { ...prev, [e.target.name]: e.target.value }에서는 prev 객체의 내용을 그대로 가져오면서, 새로운 필드를 추가한 객체를 만들고 있습니다. 이렇게 만들어진 객체는 이후 setInputs 함수를 통해 React 컴포넌트의 상태로 설정되어 컴포넌트를 업데이트합니다.
쉽게 말하면, prev 객체의 내용을 그대로 복사한 새로운 객체를 만들고, 그 객체에 새로운 필드를 추가하여 새로운 상태로 업데이트하는 것이죠.
📌총정리
이전 상태 복사한 객체 + 계산된 속성이름 사용한 객체 이걸 콤마로 합친다 (연결한다)
'PROGRAMMING > JAVASCRIPT' 카테고리의 다른 글
Promise (비동기 작업 정의할 때) (0) | 2023.12.25 |
---|---|
즉시실행함수 - 익명함수 사용하고 즉시 실행해야할 때 (0) | 2023.12.13 |
Switch Case 회피, Match 함수 or Multi 함수 (0) | 2023.11.28 |
Map and Set (1) | 2023.11.24 |
번들링 (0) | 2023.11.16 |