
const ref = useRef(value)
const ref = uesRef('hi')
ref.current = 'hello'
ref.current = 'good day'
- 저장공간
State의 변화 -> 렌더링 -> 컴포넌트 내부 변수들 초기화
Ref의 변화 -> No 렌더링 -> 변수들의 값이 유지됨
- DOM 요소에 접근
실제 코드 구현

State가 변경될 때마다 함수형 컴포넌트이기 때문에 UseRefHook이라는 함수가 다시 불려짐
useRef 추가해주기


Ref는 하나의 object고, current라는 값을 가지고 있고, current안에는 설정해준 기본값 0이 들어있음
Ref 안의 값에 접근을 하기 위해서는 countRef.current로 접근 해야 함

코드 수정 후 State 올려 버튼을 누르면 State가 올라가는 것을 확인할 수 있음
하지만, Ref 올려 버튼을 눌러도 Ref는 올라가지 않음
useState는 버튼을 누를 때마다 화면이 렌더링 되는 반면에 useRef는 버튼을 눌러도 화면이 렌더링 되지 않기 때문임

따라서 Ref 올려 버튼을 클릭한 후 State 올려 버튼을 클릭하면 화면이 렌더링 되면서 Ref도 증가함

정리
컴포넌트 내의 변수와 Ref의 차이








Ref 올려 버튼과 Var 올려 버튼을 누른 후 렌더 버튼을 누르면 Ref만 증가함
렌더링 될때마다 함수가 다시 불리면서 함수 내부의 변수들이 초기화가 되기 때문임
(CountVar도 초기화 됨)
하지만 Ref는 컴포넌트가 렌더링되더라도 계속 값을 유지함 -> 컴포넌트의 전생애주기를 통해 유지가 되기 때문임
즉, 컴포넌트가 브라우저에 마운팅 된 시점부터 마운트 해제 될 때까지 같은 값을 계속해서 유지할 수 있음
현재 Ref 안에 있는 값과 Var 변수 안에 있는 값을 출력해주는 함수 만들어보기



Ref가 유용한 상황
변화는 감지 해야 하지만 그 변화가 렌더링을 발생 시키면 안되는 값을 다루는 상황에서 사용하면 좋음


버튼을 클릭하면 count State가 업데이트 되기 때문에 useEffect가 불림 -> useEffect 안에도 renderCount State를 업데이트 시키는 코드가 있음 -> useEffect가 불림 -> renderCount State 업데이트 -> 무한 반복
Ref를 사용하면 해결 가능!

