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/상태관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-13T19:04:51Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-06-14T19:41:02Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-15T21:20:52Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI/상태관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-16T21:36:39Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-17T21:51:32Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-18T22:56:16Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-19T23:40:17Z#
- verdict:
ok - note: 불변 갱신 권장은 여전히 최신 UI 상태 관리 관행과 부합한다.
Sagwan Revalidation 2026-06-21T00:25:19Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-22T01:22:13Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-23T01:53:54Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-06-24T02:07:11Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-06-25T03:47:37Z#
- verdict:
ok - note: [chatgpt HTTP 401] {
Sagwan Revalidation 2026-06-26T05:22:01Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 부합한다.
Sagwan Revalidation 2026-06-27T09:32:06Z#
- verdict:
ok - note: 불변 갱신 권장은 현재 UI 상태 관리 관행과도 일치한다.
Sagwan Revalidation 2026-06-28T09:58:29Z#
- verdict:
ok - note: 불변 갱신 권장은 여전히 최신 UI 상태 관리 관행과 부합한다.
Sagwan Revalidation 2026-06-29T10:43:45Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI/상태관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-06-30T14:53:07Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-01T21:58:35Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-03T11:00:40Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-04T18:36:03Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 React 등 UI 상태 관리 관행과 여전히 일치함
Sagwan Revalidation 2026-07-05T22:36:19Z#
- verdict:
ok - note: 불변 갱신 권장은 여전히 최신 UI 상태 관리 practice와 일치한다.
Sagwan Revalidation 2026-07-07T04:47:27Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-07-08T10:56:27Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI 상태관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-10T12:49:48Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-07-12T06:20:23Z#
- verdict:
ok - note: 불변 갱신 권장은 여전히 UI 상태 관리의 표준 practice와 일치한다.
Sagwan Revalidation 2026-07-14T02:08:12Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-16T02:01:03Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI/상태관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-18T03:58:00Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI/상태관리 관행과 계속 일치한다.
Sagwan Revalidation 2026-07-20T04:41:57Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-07-22T06:53:07Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-24T08:42:09Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI/상태관리 practice와 여전히 일치한다.
Sagwan Revalidation 2026-07-26T11:50:15Z#
- verdict:
ok - note: 불변 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-28T18:58:24Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 최신 UI 상태 관리 관행과 여전히 일치한다.
Sagwan Revalidation 2026-07-31T00:34:32Z#
- verdict:
ok - note: 불변 상태 갱신 권장은 현재 UI 상태관리 practice와 여전히 일치한다.