> For the complete documentation index, see [llms.txt](https://yong2401.gitbook.io/til-by-ellie/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yong2401.gitbook.io/til-by-ellie/react-1/react_immutability.md).

# React Immutability(리액트의 불변성)

* 리액트에서는 컴포넌트의 *state* 값을 **직접 변경할 수는 없고,** `setState`를 통해서 값을 업데이트 해줘야 합니다.
  * why?

    state 값을 직접 변경하면 리액트가 변화를 감지하지 못해서 render 함수를 새로 호출하지 못합니다.

    하지만 `setState`함수를 호출하여 state 값을 변경하면 리액트 엔진이 자동으로 render 함수를 호출하므로 화면에 변경된 state 값을 새롭게 출력할 수 있습니다.
* *state* 값을 *직접 변경할 수 없는* 리액트의 특성을 **불변성**(Immutability)라고 합니다. 리액트에서 불변성 유지가 중요한 이유는 그래야 필요한 상황에서 rendering이 일어나도록 설계할 수 있고, 컴포넌트 최적화도 할 수 있기 때문입니다.
