이전의 브라우저 구조 (Real DOM)가 추상화된 버전
DOM tree 생성 -> Render tree 생성 -> Layout -> Paint
⚠️ 변화가 생길 때마다 tree 다시 생성
렌더링되지 않고 메모리에서 변화된 부분 감지
-> 한번에 달라진 부분 적용
virtual DOM을 효율적으로 컨트롤 할 수 있는 선택자
💡 react에서는 virtual DOM 사용 → 다른 조작 방식 필요
useRef
import React, {useState, useRef, useEffect} from 'react';
function InputPost( {onChange, title, contents} ) {
const titleInput = useRef();
const contentsInput = useRef();
}
<TitleInput
name = "title"
...
ref = {titleInput}
/>
<ContentsInput
name = "contents"
...
ref = {contentsInput}
/>
const onKeyUP = (e) => {
if (e.key === 'Enter') {
contentsInput.current.focus();
}
};
useEffect(() => {
titleInput.current.focus();
}, []);
부분 기억을 꺼내쓸 수 있는 선택자
⚠️ re-render 할 때마다 컴포넌트의 함수가 재생성
→ useCallback을 통해 함수memorize
import React, {useState, useEffect, useCallback} from 'react';
Deps (dependency array)
PostList가 변하면 addPost를 새롭게 만들기
변하지 않으면 memorize 했던 것 재사용