useRef를 사용하는 이유
135
작성자 없음
작성한 질문수 0
todo list 구현 중 id 값을 변경할 때 useState가 아닌 useRef를 사용하는 이유가 무엇인가요? useRef를 사용하는 이유와 사용되는 경우를 아직 이해하지 못해 조금 더 자세하게 알려주시면 감사하겠습니다ㅠ
답변 2
2
안녕하세요 이정환입니다.
결론부터 말씀드리면 useState는 값이 변경될 경우 컴포넌트를 리렌더링 시키지만, useRef의 경우 값이 변경되어도 컴포넌트를 리렌더링 시키지 않기 때문입니다.
TodoList 구현 중에 사용되는 id 값은 단순히 새로운 아이템이 추가될 때 1씩 증가하기만 하면 될 뿐 화면에 렌더링되지 않는 값 입니다. 해당 컴포넌트 내에서 화면에 렌더링 되는 값은 todos State 뿐이죠
따라서 id 값을 State에 보관하게 되면 비효율적입니다. 화면에 실시간으로 렌더링 되지도 않을 값을 굳이 State에 보관하게 되면 이 값이 변경될 때 마다 컴포넌트가 리렌더링되어 화면을 다시 그려내야 하기 때문입니다. 반면 useRef를 통해 보관하게 되면, 값이 변경되더라도 컴포넌트를 리렌더링 시키지 않습니다.
따라서 결론적으로! useRef와 useState는 다음과 같은 기준으로 나누어 사용하시면 됩니다.
useRef : 화면에는 나타나지 않아도 되는 값
useState : 화면에 실시간으로 렌더링 되어야 하는 값, 변경시 컴포넌트가 리렌더링 된다.
useRef에 대해 완벽히 감이 잘 안오신다면 이전 강의(5.10 챕터)를 꼭 다시 수강하시길 권장드립니다.
1
안녕하세요, 인프런 AI 인턴입니다.
hrkim0529님, useRef를 사용하는 이유에 대해 질문해 주셨는데요, 이에 대해 도움이 될 만한 기존의 답변들을 안내해 드리겠습니다.
useRef와 useState의 차이점
useRef와 useState는 React에서 상태 및 DOM 요소를 다루기 위한 두 가지 훅입니다. 주요 차이점은 다음과 같습니다:
리렌더링 여부:
useState: 상태가 업데이트되면 컴포넌트가 리렌더링됩니다. 따라서 화면에 상태 변화가 반영되어야 할 때 사용합니다.
useRef: 값이 변경되어도 컴포넌트가 리렌더링되지 않습니다. 따라서 상태 변화가 화면과 직접적으로 연관되지 않을 때 사용합니다.
사용 예제:
useRef: 주로 현재 렌더링과 무관하게 값이 변경될 때 사용합니다. 예를 들어, DOM 접근, 비동기 작업의 상태 저장, 이전 prop 또는 state 기억.
useState: UI 갱신이 필요할 때 사용합니다. 예를 들어, 사용자 입력 값, UI 상태 등의 관리.
관련 질문 및 답변 링크
dataId 를 사용하기위해 useState가 아닌 useRef를 사용하는 이유가 궁금합니다:
이 질문은 useState 대신 useRef를 선택하는 이유에 대해 자세히 설명하고 있습니다.key값 할당에 대해 궁금합니다:
useRef와 일반 변수 선언의 차이를 다루며, 렌더링 시 변수 초기화에 관한 설명을 찾아볼 수 있습니다.
질문하신 내용과 관련하여 위의 링크를 통해 이해를 돕게 되길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
존재하지 않는 일기 url입력 시 alert이 두 번 떠요
0
33
1
교재(3쇄)와 강의 내용 문의
0
34
2
12.13) 하단 여백 스타일링 관련 질문 드립니다.
0
67
2
에러 질문드립니다
0
63
2
VSCode 설정 문의
0
70
2
PPT 코드 관련 질문
0
49
2
useEffect와 lifecycle문의
0
65
2
프론트엔드 학습 수준 문의
0
82
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
73
2
데이터 로딩중 화면만 계속 나와요!!
0
73
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
103
2
이후의 커리큘럼 문의
0
126
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
73
2
최적화 관련 질문있습니다 (useMemo 등)
0
103
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
96
3
Date 객체에 관련하여 질문드립니다.
0
97
2
리액트 개정판 교재 질문
0
76
2
예제코드가 안나와요!
0
86
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
131
2
onMouseEnter 관련 문의 드립니다
0
111
3
배열의 렌더링 관련 질문 드립니다.
0
84
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
135
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
153
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
73
1





