const refName = useRef()
<input type="text" ref={refName}/>
//ref값은 .current.value 로 접근
제어된 컴포넌트 (Controlled Component): state 사용
제어된 컴포넌트는 컴포넌트의 상태(state)를 사용하여 사용자 입력을 관리합니다. 사용자 입력이 발생할 때마다 상태를 업데이트하고, 상태에 따라 UI가 다시 렌더링됩니다. 이 방식은 단방향 데이터 흐름을 따르며, 리액트의 주요 개념 중 하나인 "*SSOT(Single Source of Truth)"를 지향합니다.
제어되지 않는 컴포넌트 (Uncontrolled Component): ref 사용
제어되지 않는 컴포넌트는 컴포넌트의 상태(state)를 사용하여 사용자 입력을 다루지 않습니다. 대신, 실제 DOM 요소에서 직접 값을 읽거나 업데이트합니다. 이 방식에서는 ref를 사용하여 DOM 요소에 접근하고, DOM 이벤트 리스너를 통해 값을 가져오거나 변경합니다.
*SSOT(Single Source of Truth) :
SSOT(Single Source of Truth)는 상태 관리 패턴으로, 애플리케이션의 상태를 하나의 소스에서 관리하는 것입니다. 상태 일관성과 예측 가능한 업데이트를 제공하여 코드의 가독성과 유지 보수성을 향상시키며 여러 컴포넌트 간 상태 동기화를 간편하게하고 테스트 용이성과 확장성을 제공합니다.