React์ experimental_LegacyHidden ๊ธฐ๋ฅ, ๋ ๊ฑฐ์ ์ปดํฌ๋ํธ ๋ ๋๋ง์ ๋ฏธ์น๋ ์ํฅ, ์ฑ๋ฅ ์ต์ ํ ์ ๋ต ๋ฐ ์ต์ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ณด์ธ์.
์ฑ๋ฅ ์ ๊ธ ํด์ : React์ experimental_LegacyHidden ๊ธฐ๋ฅ ์ฌ์ธต ๋ถ์
React๋ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ค๊ณ๋ ๊ธฐ๋ฅ๋ค์ ๋์
ํ๋ฉฐ ๊ณ์ํด์ ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ํ์ฌ ์คํ์ ์ผ๋ก ์ ๊ณต๋๋ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ ๋ฐ๋ก experimental_LegacyHidden์
๋๋ค. ์ด ๋ธ๋ก๊ทธ ํฌ์คํธ์์๋ ์ด ๊ธฐ๋ฅ์ ๋ชฉ์ , ์ด์ , ์ค์ ์ ์ฉ ์ฌ๋ก๋ฅผ ์์ธํ ์ดํด๋ณด๋ฉฐ, ํนํ ์ต์ React ์ ํ๋ฆฌ์ผ์ด์
๋ด์์ ๋ ๊ฑฐ์ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ ์ต์ ํํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์๋์ง์ ์ด์ ์ ๋ง์ถ ๊ฒ์
๋๋ค. ๋ํ ์ ์ฌ์ ์ธ ๋จ์ ๊ณผ ํจ๊ณผ์ ์ธ ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด์๋ ๋
ผ์ํ ๊ฒ์
๋๋ค.
experimental_LegacyHidden์ด๋ ๋ฌด์์ธ๊ฐ?
experimental_LegacyHidden์ React๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปดํฌ๋ํธ ๋ ๋๋ง ์์
์ ๊ณ์ํ ์ ์๋๋ก ํ๋ฉด์ ์ปดํฌ๋ํธ์ ๊ฐ์์ฑ์ ์ ์ดํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ React ๊ธฐ๋ฅ(๋์์ฑ ๊ธฐ๋ฅ ์ ํ๊ตฐ์ ์ผ๋ถ)์
๋๋ค. ์ด๋ ํนํ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค๊ฑฐ๋ ํ๋ฉด์ ์ฆ์ ๋ณด์ด์ง ์๋ ๋ ๊ฑฐ์ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฏธ๋ฆฌ ๋ ๋๋งํ๋ ์ด์ ์ด ์ถ๊ฐ๋, ์ ๊ตํ ์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก experimental_LegacyHidden์ ์ปดํฌ๋ํธ๋ฅผ ๋ง์ดํธ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ์จ๊ธธ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฌ๋ฉด React๋ ํ์ฌ ๋ณด์ด์ง ์๋๋ผ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํด๋น ์ปดํฌ๋ํธ์ ๋ํ ์
๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ๋ฅผ ํ์ํด์ผ ํ ๋๊ฐ ๋๋ฉด ์ด๋ฏธ ์ฌ์ ๋ ๋๋ง์ด ์๋ฃ๋ ์ํ์ด๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ํจ์ฌ ๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ด ์ ํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
experimental_LegacyHidden์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ?
experimental_LegacyHidden์ ์ฃผ๋ ๋๊ธฐ๋ ํนํ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ์
๋๋ค:
- ๋ ๊ฑฐ์ ์ปดํฌ๋ํธ: ์ต์ React ๋ ๋๋ง ํจํด์ ์ต์ ํ๋์ง ์์์ ์ ์๋ ์ค๋๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ด๋ฌํ ์ปดํฌ๋ํธ๋ ์ข ์ข ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ผ์ผํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋๊ธฐ์ ์์ ์ ํฌ๊ฒ ์์กดํ๊ฑฐ๋ ๋ ๋๋ง ์ค์ ๋ณต์กํ ๊ณ์ฐ์ ์ํํ๋ ์ปดํฌ๋ํธ๋ฅผ ์๊ฐํด ๋ณผ ์ ์์ต๋๋ค.
- ์ด๊ธฐ์ ํ๋ฉด ๋ฐ์ ์๋ ์ปดํฌ๋ํธ: ํญ, ์์ฝ๋์ธ ๋๋ ๋ชจ๋ฌ ์ฐฝ ๋ค์ ์์ด ์ฆ์ ๋ณด์ด์ง ์๋ ์์๋ค์
๋๋ค. ๊ฐ ํญ์ ๋ณต์กํ ์ฐจํธ๊ฐ ํฌํจ๋ ๋์๋ณด๋๋ฅผ ์์ํด ๋ณด์ธ์.
experimental_LegacyHidden์ ์ฌ์ฉํ๋ฉด ๋นํ์ฑ ํญ์ ์ฐจํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์๊ฐ ํด๋น ํญ์ผ๋ก ์ ํํ ๋ ์ฆ์ ๋ก๋๋๋๋ก ํ ์ ์์ต๋๋ค. - ๋น์ฉ์ด ๋ง์ด ๋๋ ์ปดํฌ๋ํธ: ๋ ๊ฑฐ์ ์ฌ๋ถ์ ์๊ด์์ด ๋ ๋๋ง์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ์ ๋๋ค. ์ด๋ ๋ณต์กํ ๊ณ์ฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ๋๋ ๋ณต์กํ UI ๊ตฌ์กฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค.
- ์กฐ๊ฑด๋ถ ๋ ๋๋ง: ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๊ฐ ์กฐ๊ฑด๋ถ๋ก ๋ ๋๋ง๋ ๋ ์ ํ ํจ๊ณผ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ๊ฐ์ ํฉ๋๋ค.
experimental_LegacyHidden์ ํ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ์ด๊ธฐ ๋ก๋ ์๊ฐ ๋จ์ถ: ์ค์ํ์ง ์์ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ ์ง์ฐ์ํต๋๋ค.
- ์๋ต์ฑ ํฅ์: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ์ฌ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ฒ๋ฒ ์ ์ต์ํ: ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ ๋๋ง ์์ ์ผ๋ก ์ธํ UI ๋ฉ์ถค ํ์์ ๋ฐฉ์งํฉ๋๋ค.
experimental_LegacyHidden ๊ตฌํ ๋ฐฉ๋ฒ
experimental_LegacyHidden API๋ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค. ๊ธฐ๋ณธ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
import { unstable_LegacyHidden as LegacyHidden } from 'react';
function MyComponent() {
const [isVisible, setIsVisible] = React.useState(false);
return (
);
}
function ExpensiveLegacyComponent() {
// ์ด ์ปดํฌ๋ํธ๋ ๋ณต์กํ ๊ณ์ฐ์ด๋ ๋ ๋๋ง์ ์ํํ ์ ์์ต๋๋ค.
return This is an expensive legacy component.
;
}
์ค๋ช :
unstable_LegacyHidden๋ฅผLegacyHidden์ผ๋ก ๊ฐ์ ธ์ต๋๋ค. API๊ฐ ์์ง ์คํ์ ์ด๋ฉฐ ๋ณ๊ฒฝ๋ ์ ์์์ ๋ํ๋ด๋unstable_์ ๋์ฌ์ ์ ์ํ์ธ์.ExpensiveLegacyComponent๋ฅผLegacyHidden์ปดํฌ๋ํธ๋ก ๊ฐ์๋๋ค.visibleprop์ExpensiveLegacyComponent์ ๊ฐ์์ฑ์ ์ ์ดํฉ๋๋ค.visible์ดtrue์ด๋ฉด ์ปดํฌ๋ํธ๊ฐ ํ์๋ฉ๋๋ค.visible์ดfalse์ด๋ฉด ์ปดํฌ๋ํธ๋ ์จ๊ฒจ์ง์ง๋ง React๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ณ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
์ค์ ์๋๋ฆฌ์ค์์ experimental_LegacyHidden์ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง ๋ช ๊ฐ์ง ๋ ์ค์ฉ์ ์ธ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. ํญ ์ธํฐํ์ด์ค
๊ฐ ํญ์ ๋ณต์กํ ์ฐจํธ๋ ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋๊ฐ ํฌํจ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์์ํด ๋ณด์ธ์. ๋ชจ๋ ํญ์ ์ฒ์์ ๋ ๋๋งํ๋ฉด ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. experimental_LegacyHidden์ ์ฌ์ฉํ๋ฉด ๋นํ์ฑ ํญ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฏธ๋ฆฌ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์๊ฐ ํญ ๊ฐ์ ์ ํํ ๋ ๋ถ๋๋ฌ์ด ์ ํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
import { unstable_LegacyHidden as LegacyHidden } from 'react';
function TabPanel({ tabId, children, activeTab }) {
return (
{children}
);
}
function App() {
const [activeTab, setActiveTab] = React.useState('tab1');
return (
- setActiveTab('tab1')}>Tab 1
- setActiveTab('tab2')}>Tab 2
- setActiveTab('tab3')}>Tab 3
);
}
์ด ์์ ์์๋ ํ์ฑ ํญ์ ์ฝํ
์ธ ๋ง ๋ณด์
๋๋ค. ํ์ง๋ง React๋ ๋นํ์ฑ ํญ์ ์ฝํ
์ธ ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๊ณ์ ๋ ๋๋งํ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์๊ฐ ํด๋ฆญํ๋ฉด ์ฆ์ ํ์๋ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ์ด๋ ExpensiveChart๊ฐ ๋ ๋๋งํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ ํนํ ํจ๊ณผ์ ์
๋๋ค.
2. ๋ชจ๋ฌ ์ฐฝ
๋ชจ๋ฌ ์ฐฝ์๋ ์ข
์ข
๋ณต์กํ ์์์ด๋ ๋ฐ์ดํฐ ๋์คํ๋ ์ด๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ ๋ ๋ชจ๋ฌ์ด ๋ ๋๋ง๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ , experimental_LegacyHidden์ ์ฌ์ฉํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ชจ๋ฌ์ ๋ฏธ๋ฆฌ ๋ ๋๋งํ ๋ค์ ๋ถ๋๋ฝ๊ฒ ํ๋ฉด์ ํ์ํ ์ ์์ต๋๋ค.
import { unstable_LegacyHidden as LegacyHidden } from 'react';
function Modal({ isOpen, onClose, children }) {
return (
{children}
);
}
function App() {
const [isModalOpen, setIsModalOpen] = React.useState(false);
return (
setIsModalOpen(false)}>
);
}
์ฌ๊ธฐ์ Modal ์ปดํฌ๋ํธ๋ isOpen์ด false์ผ ๋ ์จ๊ฒจ์ง์ง๋ง, React๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ํด๋น ์ฝํ
์ธ ๋ฅผ ๊ณ์ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํนํ ExpensiveForm์ด ๋ณต์กํ ์ปดํฌ๋ํธ์ธ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ "Open Modal" ๋ฒํผ์ ํด๋ฆญํ ๋ ๋ชจ๋ฌ์ด ์ฆ์ ์ด๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
3. ์์ฝ๋์ธ ์ปดํฌ๋ํธ
ํญ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฝ๋์ธ ์ปดํฌ๋ํธ๋ experimental_LegacyHidden์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ์ ํ ์น์
์ ์ฝํ
์ธ ๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ๋ฉด ์ฌ์ฉ์๊ฐ ํ์ฅํ ๋ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
import { unstable_LegacyHidden as LegacyHidden } from 'react';
function AccordionItem({ title, children, isOpen, onToggle }) {
return (
{children}
);
}
function App() {
const [openItem, setOpenItem] = React.useState(null);
const handleToggle = (itemId) => {
setOpenItem(openItem === itemId ? null : itemId);
};
return (
handleToggle('section1')}
>
handleToggle('section2')}
>
);
}
์ด ๊ฒฝ์ฐ ์ด๋ฆฐ ์์ฝ๋์ธ ํญ๋ชฉ์ ์ฝํ
์ธ ๋ง ๋ณด์
๋๋ค. React๋ ๋ซํ ์์ฝ๋์ธ ํญ๋ชฉ์ ์ฝํ
์ธ ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฏธ๋ฆฌ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์๊ฐ ํ์ฅํ ๋ ๋ ๋น ๋ฅธ ์ ํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ExpensiveContent ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฌ์ ๋ ๋๋ง๋๋ ๊ฒ์ด ํฐ ์ด์ ์ด ๋ ๊ฒ์
๋๋ค.
๊ณ ๋ ค์ฌํญ ๋ฐ ์ ์ฌ์ ๋จ์
experimental_LegacyHidden์ ๊ฐ๋ ฅํ ๋๊ตฌ๊ฐ ๋ ์ ์์ง๋ง, ๊ทธ ํ๊ณ์ ์ ์ฌ์ ์ธ ๋จ์ ์ ์ธ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ด๊ธฐ ๋ ๋๋ง ๋น์ฉ ์ฆ๊ฐ: ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ๋ฉด ์ด๊ธฐ ๋ ๋๋ง ๋น์ฉ์ด ์ฆ๊ฐํ์ฌ ์ฒซ ๋ฒ์งธ ์๋ฏธ ์๋ ํ์ธํธ(TTFMP) ์๊ฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์ด์ ์ด ๋น์ฉ์ ์ํํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ ์คํ ํ๋กํ์ผ๋ง์ด ํ์ํฉ๋๋ค. ํน์ ์ ํ๋ฆฌ์ผ์ด์
์์
experimental_LegacyHidden์ฌ์ฉ์ ์ฑ๋ฅ ์ํฅ์ ์ธก์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. - ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ์ปดํฌ๋ํธ๋ฅผ ์จ๊ฒจ์ง ์ํ์์๋ ๋ง์ดํธ๋ ์ํ๋ก ์ ์งํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ํนํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น์์ ๊ณ ๋ คํด์ผ ํ ์ค์ํ ์ฌํญ์ ๋๋ค.
- ๋ณต์ก์ฑ:
experimental_LegacyHidden์ ๋์ ํ๋ฉด ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๊ณ ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ์ ํ์ง์ ๋ํ ๋ช ํํ ์ดํด๊ฐ ์ค์ํฉ๋๋ค. - ์คํ์ API: ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด
experimental_LegacyHidden์ ์คํ์ ์ธ API์ด๋ฉฐ ํฅํ React ๋ฒ์ ์์ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ ๊ฑฐ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ์ํ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ ์ค๋น๋ฅผ ํด์ผ ํฉ๋๋ค. - ๋ง๋ฅ ํด๊ฒฐ์ฑ
์ด ์๋:
experimental_LegacyHidden์ ์ปดํฌ๋ํธ ์ต์ ํ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋๋ค. ์ด๋ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ณด์์ ์ธ ๊ธฐ์ ์ด์ง๋ง, ์ปดํฌ๋ํธ ์์ฒด์ ๊ทผ๋ณธ์ ์ธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก
experimental_LegacyHidden์ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค:
- ์ ํ๋ฆฌ์ผ์ด์
ํ๋กํ์ผ๋ง:
experimental_LegacyHidden์ ๊ตฌํํ๊ธฐ ์ ์ React ๊ฐ๋ฐ์ ๋๊ตฌ๋ ๋ค๋ฅธ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ์ธ์. ๋ชจ๋ ์ปดํฌ๋ํธ์ ๋งน๋ชฉ์ ์ผ๋ก ์ ์ฉํ์ง ๋ง๊ณ , ์ค์ ๋ก ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์ปดํฌ๋ํธ์ ์ง์คํ์ธ์. - ์ฑ๋ฅ ์ธก์ :
experimental_LegacyHidden์ ๊ตฌํํ ํ์๋ Lighthouse๋ WebPageTest์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ธก์ ํ์ธ์. ์ฒด๊ฐ ์ฑ๋ฅ์ด ์ค์ ๋ก ๊ฐ์ ๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. - ๋๋ฌผ๊ฒ ์ฌ์ฉ:
experimental_LegacyHidden์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ์ง ๋ง์ธ์. ๋ ๋๋ง ๋น์ฉ์ด ์ ๋ง ๋ง์ด ๋ค๊ฑฐ๋ ์ฆ์ ๋ณด์ด์ง ์๋ ์ปดํฌ๋ํธ์๋ง ์ ์ฉํ์ธ์. - ์ปดํฌ๋ํธ ์ฐ์ ์ต์ ํ:
experimental_LegacyHidden์ ์์กดํ๊ธฐ ์ ์ ๋ฉ๋ชจ์ด์ ์ด์ , ์ง์ฐ ๋ก๋ฉ, ์ฝ๋ ๋ถํ ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ์ต์ ํํ๋ ค๊ณ ๋ ธ๋ ฅํ์ธ์. - ๋์ ๊ณ ๋ ค: ๊ฐ์ํ(๋๊ท๋ชจ ๋ชฉ๋ก์ฉ)๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(์ด๊ธฐ ๋ก๋ ์๊ฐ ๊ฐ์ ์ฉ)๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ์ ์ ํ์ํ์ธ์.
- ์ต์ ์ ๋ณด ์ ์ง: React์ ์ต์ ๊ฐ๋ฐ ๋ํฅ๊ณผ
experimental_LegacyHiddenAPI์ ๋ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ์ฃผ์ํ์ธ์.
experimental_LegacyHidden์ ๋์
experimental_LegacyHidden์ ์ฑ๋ฅ ์ต์ ํ์ ๋ํ ํน์ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ง๋ง, ๋จ๋
์ผ๋ก ๋๋ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๋์ ๊ธฐ์ ์ด ์์ต๋๋ค:
- React.lazy์ Suspense: ์ด ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์ง์ฐ ๋ก๋ฉํ์ฌ ์ค์ ๋ก ํ์ํ ๋๊น์ง ๋ ๋๋ง์ ์ฐ๊ธฐํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ์ ๋ณด์ด์ง ์๋ ์ปดํฌ๋ํธ์ ๋ํ ํ๋ฅญํ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ์ด์ ์ด์ (React.memo): ๋ฉ๋ชจ์ด์ ์ด์ ์ prop์ด ๋ณ๊ฒฝ๋์ง ์์์ ๋ ์ปดํฌ๋ํธ๊ฐ ๋ถํ์ํ๊ฒ ๋ค์ ๋ ๋๋ง๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ํนํ ์์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ถํ : ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ ์์ ์ฒญํฌ๋ก ๋ถํ ํ๋ฉด ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๊ฐ์ํ: ๋๊ท๋ชจ ๋ชฉ๋ก์ด๋ ํ ์ด๋ธ์ ๊ฒฝ์ฐ, ๊ฐ์ํ ๊ธฐ์ ์ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํ์ฌ ๋ ๋๋ง ์ค๋ฒํค๋๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค.
- ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง: ์ด๋ฌํ ๊ธฐ์ ์ ํจ์ ์คํ ์๋๋ฅผ ์ ํํ์ฌ ์คํฌ๋กค์ด๋ ํฌ๊ธฐ ์กฐ์ ๊ณผ ๊ฐ์ ๋น๋ฒํ ์ด๋ฒคํธ์ ๋ํ ๊ณผ๋ํ ์ฌ๋ ๋๋ง์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR): SSR์ ์๋ฒ์์ ์ด๊ธฐ HTML์ ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ๋ก ์ ์กํจ์ผ๋ก์จ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
experimental_LegacyHidden์ React ์ ํ๋ฆฌ์ผ์ด์
์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ด๋ฉฐ, ํนํ ๋ ๊ฑฐ์ ์ปดํฌ๋ํธ๋ ์ฆ์ ๋ณด์ด์ง ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃฐ ๋ ์ ์ฉํฉ๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ปดํฌ๋ํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํจ์ผ๋ก์จ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ ์ ๊ทธ ํ๊ณ, ์ ์ฌ์ ๋จ์ , ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋กํ์ผ๋งํ๊ณ , ์ฑ๋ฅ์ ์ธก์ ํ๋ฉฐ, ๋ค๋ฅธ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ์ ๊ณผ ํจ๊ป ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํจ์ ๊ธฐ์ตํ์ธ์.
React๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ experimental_LegacyHidden๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ๋ฐ ์ ์ ๋ ์ค์ํ ์ญํ ์ ํ ๊ฒ์
๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ์ ํ๊ณ ์คํํจ์ผ๋ก์จ, ๊ธฐ๋ณธ ์ปดํฌ๋ํธ์ ๋ณต์ก์ฑ์ ๊ด๊ณ์์ด ์ ํ๋ฆฌ์ผ์ด์
์ด ์ต์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. experimental_LegacyHidden ๋ฐ ๊ธฐํ ํฅ๋ฏธ๋ก์ด ์ฑ๋ฅ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ์ต์ ์
๋ฐ์ดํธ๋ React ๊ณต์ ๋ฌธ์์ ์ปค๋ฎค๋ํฐ ํ ๋ก ์ ์ฃผ์ํ์ธ์.