ref & useRef
- react에서 요소 선택을 할 때는
id
나 ref
를 지정해서 사용한다.
id
: 같은 컴포넌트를 반복적으로 사용한다면 중복이 발생한다. 고유한 값이 아니게 된다.
ref
: 전역적으로 작동하지 않고 컴포넌트 내부에서만 작동한다. (중복되지 않는다.)
- DOM을 직접적으로 건드려야 할 때 사용한다. (input에 focus를 주거나 scrollBox를 조작한다거나 등)
- 로컬 변수로도 사용이 가능하다. 로컬변수는 렌더링 되어도 값이 그대로 유지된다.
- ref 가 변경되어도 컴포넌트는 렌더링 되지 않는다.
▶️ 함수형 컴포넌트 Ref 사용하기
import { useRef } from "react";
const input = useRef();
const focusInput = () => {
input.current.focus();
};
...
return(
<>
<input type="text" ref={input} />
<button type="button" onClick={focusInput}> 버튼 </button>
</>
)
console.log(input.current);
life Cycle
- 라이프사이클 ( LifeCycle )?
- 모든 React Component 에 존재하는 생명 주기이다. 컴포넌트가 실행되거나, 업데이트 되거나, 제거 될 때 특정한 이벤트들이 발생한다. 이렇게 컴포넌트(프로그램)이 실행되고 종료되는 그 과정이라고 생각하면 된다.
이미지출처
- Mount
- DOM이 생성되고 웹 브라우저 상에 나타난다. (생성 될 때)
- Update
props
, state
바뀌었을 때 업데이트한다. (업데이트 할 때)
- Unmount
- 컴포넌트가 화면에서 사라질 때. (제거 할 때)
▶️ 함수형 컴포넌트에서의 life Cycle
useEffect()
를 사용해 Mount, Update, Unmount 시 특정 작업을 처리
useEffect(콜백함수, 의존성 배열)
의 형태이다. 배열에 뭘 넣느냐에 따라 앞의 함수가 언제 실행 될 지 다르게 동작된다. 넣어도 되고 안넣어도 된다.
useEffect(effect, deps);
import { useEffect, useState } from "react";
function LifeCycle(props) {
const { number } = props;
const [text, setText] = useState("");
useEffect(() => {
console.log("function Component : ⭕ mount");
return () => {
console.log("function Component : ❌ unmount");
};
}, []);
useEffect(() => {
console.log("function Component : ✅ update");
});
useEffect(() => {
console.log("function Component : ✅✅ text update");
}, [text]);
return (
<>
<h2>함수형 컴포넌트 LifeCycle 공부</h2>
<div>number : {number}</div>
<input
type="text"
value={text}
onChange={(e) => {
setText(e.target.value);
}}
/>
</>
);
}
export default LifeCycle;