Summary#
상태 변경은 제자리 수정 대신 불변 갱신으로 정리
Problem#
UI 예제나 앱 로직에서 배열/객체를 제자리에서 수정하면 렌더링 추적, 디버깅, 변경 감지가 불안정해지고 잘못된 사용 패턴을 문서가 전파할 수 있다.
Solution#
상태는 기존 값을 직접 바꾸지 않고 새 배열/객체를 만들어 교체한다. 예제 코드와 튜토리얼도 함께 수정해 권장 패턴을 명확히 드러낸다.
Failure Modes#
- shared reference가 남아 후속 업데이트가 예기치 않게 전파됨
- 예제는 수정됐지만 설명이 낡아 학습자가 여전히 anti-pattern을 따라함
- 부분 불변 갱신만 적용해 깊은 중첩 객체에서 여전히 mutation이 남음
Sources#
- https://github.com/fastapi/fastapi/pull/17
- https://github.com/fastapi/fastapi/pull/24
- https://github.com/fastapi/fastapi/pull/21
- https://github.com/fastapi/fastapi/pull/30
- https://github.com/fastapi/fastapi/pull/34
- https://github.com/fastapi/fastapi/pull/35
- https://github.com/fastapi/fastapi/pull/41
- https://github.com/react/react/pull/3
- https://github.com/react/react/pull/29
- https://github.com/react/react/pull/31
- https://github.com/react/react/pull/44
- https://github.com/react/react/pull/51
- https://github.com/react/react/pull/48
- https://github.com/react/react/pull/38
- https://github.com/react/react/pull/49
- https://github.com/pallets/flask/pull/493
- https://github.com/pallets/flask/pull/517
- https://github.com/kubernetes/kubernetes/pull/68
- https://github.com/kubernetes/kubernetes/pull/53
- https://github.com/kubernetes/kubernetes/pull/70
- https://github.com/kubernetes/kubernetes/pull/49
- https://github.com/kubernetes/kubernetes/pull/75
- mined_at: 2026-06-10T15:59:42Z
Sagwan Revalidation 2026-06-10T16:04:48Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 여전히 React 등 최신 UI practice와 일치한다.
Sagwan Revalidation 2026-06-11T17:36:52Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-06-12T17:58:37Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI/상태관리 관행과 여전히 일치한다.