
리액트에서 폼 입력값을 관리하는 방법에는 크게 두 가지가 있다.
1️⃣ 상태(state) 로 관리하는 방식 ⇒ Controlled Input
2️⃣ 참조(ref) 로 관리하는 방식 ⇒ Uncontrolled Input
해당 방식은 가장 일반적인 방식이긴하나 항상 최선의 방법일 순 없다.
상태로 관리하는 방식은 다양한 장점을 가지고있지만, 단점도 있는데 장/단점은 다음과 같다.
😎 장점
즉각적인 UI업데이트가 가능하다.🤨 단점
그렇다면 참조로 관리하는 방식은 상태로 관리하는 방식의 단점을 대체할 수 있는 방식일까?
제출버튼이 클릭되기전까지는 입력값이 변경될 때마다 컴포넌트 리렌더링을 계속 할 필요가 없다.
이럴 때 상태로 관리하기보다는 참조(ref)로 관리하는 방식으로 입력값을 관리하는 것이 더 적합하다.
참조(ref)를 사용하여 관리를 하게되면 입력값이 변경되어도 리렌더링이 발생하지 않아 성능향상에 도움이 된다.
⇒ 그렇기 때문에 단순함 폼이나 제출시점에만 입력값이 필요한 경우라면 상태보단 참조로 관리하자!
😎 장점
특정 시점에만 값이 필요할 경우 적합하다.🤨 단점
그렇다면 상태/참조로 관리하는 방식의 장/단점과 어떤 상황에서 어떤 방법을 사용하는 것이 좋다는건지 표로 정리해보자.

🔗 참고자료
https://ko.react.dev/reference/react/useState
https://ko.react.dev/reference/react/useRef