'2025/03/19'에 해당되는 글 1건

728x90

Webstorm 에서 코드의 의미가 어떻게 다른지 AI에게 문의를 해봤다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const handleChangeTodo = (e) => {
 
todo[e.target.name= e.target.value
// e.target.name : 입력 필드의 `name` 속성 값
// e.target.value : 사용자가 입력한 실제 데이터
 
setTodo({...todo})
}
 
위 코드와 아래 코드는 동일한 결과를 얻는가?
 
const handleChangeTodo = (e) => {
setTodo((prevTodo) => ({
...prevTodo,
[e.target.name]: e.target.value,
}));
};
 

 

첫번째 코드

- 여기서 `todo[e.target.name] = e.target.value`를 통해 기존 상태 객체인 `todo`를 **직접 수정**하고, 
  이후 스프레드 연산자를 사용해 새로운 객체를 생성하여 `setTodo`를 호출하고 있다.

- **문제점**:
- React는 상태를 직접 수정하는 것을 권장하지 않는다. 
  직접 수정(`todo[e.target.name] = e.target.value`) 시 예상치 못한 상태 동작이나 렌더링 문제가 발생할 가능성이 있다.
- 객체 복사를 통해 새로운 상태를 생성한다고는 해도, `todo` 객체는 이미 수정된 상태이므로 **불변성을 위반**한 상태가 된다.

 

두번째 코드

- 이 코드는 `setTodo`에서 이전 상태(`prevTodo`)를 기반으로 새로운 상태를 생성한다.
  기존 상태(`prevTodo`)는 불변성을 유지한 채 동적으로 수정된 속성 값만 변경된다.
- **장점**:
- `prevTodo`는 최신 상태를 안전하게 참조하며, 새로운 객체를 생성하여 React의 상태 업데이트 방식에 맞춰 동작한다.
- 이 방식은 React의 상태 불변성 원칙에 부합하며, React의 상태 변경 및 렌더링 로직에서 **안전하게 작동**한다.

 

webstorm 에 연결해서 유료로 사용하는 AI 는 코드 내용 전체를 알기 때문에 chatGPT에 문의하는 것보다 설명의 정확도 좀 더 나은 거 같기도 하다.

하지만 chatGPT 를 통해서는 다양한 걸 문의하는 장점이 있는 거 같다.

728x90

'React > React' 카테고리의 다른 글

React 배포를 위한 nginx 설정  (0) 2025.03.13
React Naver Map API 사용 샘플  (2) 2022.10.25
React 카카오맵 API 사용 샘플  (0) 2022.10.24
React useMemo & useCallback  (0) 2022.10.24
React useRef 사용 예제  (0) 2022.10.15
블로그 이미지

Link2Me

,