반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Learning React
- 화살표 함수 {}
- d3 지도 확대/축소
- git
- 참조형 props의 default
- vuedraggable
- commonjs와 ecmascript modules(esm)
- reflow
- ToDo
- repaint
- component is already mounted please use $fetch instead.
- 화살표 함수 중괄호
- 함수형 프로그래밍
- in-memory pm2 is out-of-date
- vue 컴포저블 함수
- vue3 drag and drop
- pm2 업데이트 에러
- $fetch
- d3 지도 타입스크립트
- vue draggable 차트 안나옴
- cloud firestore id auto increment
- ecmascript modules(esm)
- nuxt universal rendering
- 참조형 default
- 인터넷 거버넌스
- firebase id 자동
- d3 지도 툴팁
- d3 지도
- vue composable 함수
- pm2 버전 충돌
Archives
- Today
- Total
빵 입니다.
useRef() 본문
반응형
🔥함수형 컴포넌트 기반으로 정리를 했습니다!
- ref는 다른 DOM 요소에 접근하고 조작할 수 있게 해준다.
- 리액트 16.3 버전 이상에서는 함수 컴포넌트에서 useRef 훅을 사용하여 ref를 생성할 수 있다.
- 리액트가 JSX 코드를 렌더링 할 때, ref 객체에는 실제 DOM 요소나 컴포넌트의 인스턴스가 저장된다.
- 저장된 값은 항상 객체이고, current 속성을 가지고 있다.
- current 속성은 ref가 연결된 실제 값을 갖는다.
- 어떤 HTML 요소에도 추가할 수 있는데, 입력 필드 내용을 가져오기 위해 주로 input에 많이 사용한다.
import React, { useRef, useEffect } from 'react';
const MyComponent = () => {
const myInputRef = useRef();
useEffect(() => {
myInputRef.current.focus();
}, []);
return <input ref={myInputRef} />;
}
- 콘솔찍으면 {current: input#myInputRef} 반환한다.
- input#myInputRef은 ref 속성 적용한 요소 => 실제 DOM 노드 반환하는 것!
- nameInputRef.current.value로 접근해서 값을 사용할 수 있다.
🌀 DOM은 리액트에 의해서만 조작되는 게 좋다.
React는 Virtual DOM을 활용하여 성능 최적화를 이루기 위해 DOM 조작을 추상화하는데, 직접 DOM을 조작하면 React의 성능 이점을 잃을 수 있고, 일관성 있는 상태 유지가 어려워질 수 있다.
🌀 키 입력 시 최종 입력값만 ref로 접근해서 가져올 수 있다.
키 입력 이벤트는 state로 이벤트 처리할 수 있지만, 입력값이 변경될 때마다 컴포넌트가 리렌더링되고 UI가 업데이트되기 때문에 과부하가 걸릴 수 있다.
결론 📌값만 읽고 싶다면 ref가 더 낫다. 단, DOM을 조작한다는 예외적인 일을 하기 때문에 주의해서 사용해야 한다.
반응형
'프론트엔드 > React' 카테고리의 다른 글
useReducer() (0) | 2023.12.13 |
---|---|
useEffect() (0) | 2023.12.13 |
Portal (0) | 2023.12.06 |
CSS 스타일 설정 방법 (0) | 2023.12.06 |
react와 react-dom과 react-native (0) | 2023.12.06 |