React์ ์คํ์ `experimental_Scope` ๊ธฐ๋ฅ ํ๊ตฌ: ๋ชฉ์ , ์ด์ , ์ ์ฌ์ ์ฌ์ฉ ์ฌ๋ก, ๋ณต์กํ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ ๋ฐ ์ฑ๋ฅ ํฅ์ ๋ฐฉ๋ฒ. ๊ธ๋ก๋ฒ ์์ ํฌํจ.
React์ ์คํ์ `experimental_Scope`: ์ต์ ์น ๊ฐ๋ฐ์์ ์ปดํฌ๋ํธ ๋ฒ์์ ์ดํด
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React๋ ์ต์ ์น ๊ฐ๋ฐ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ํ์ฌ ํ์ฅ์ ์ผ์ผํค๋ ์คํ์ ๊ธฐ๋ฅ ์ค ํ๋๋ `experimental_Scope`์ ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ `experimental_Scope`์ ๋ํด ์์ธํ ์์๋ณด๊ณ ๊ทธ ๋ชฉ์ , ์ด์ , ์ ์ฌ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ณ ๋ณต์กํ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ ๋ฐ ์ฑ๋ฅ์ ํ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํฉ๋๋ค. ๊ธ๋ก๋ฒ ๊ด์ ๊ณผ ์ค์ฉ์ ์ธ ์์ ๋ฅผ ํตํด ๊ทธ ๋ณต์ก์ฑ์ ๊ฒํ ํ์ฌ ํ๋ก์ ํธ์ ๋ฏธ์น๋ ์ํฅ์ ์ดํดํ๋๋ก ๋๊ฒ ์ต๋๋ค.
`experimental_Scope`๋ ๋ฌด์์ธ๊ฐ?
ํต์ฌ์ ์ผ๋ก, `experimental_Scope`๋ ๊ฐ๋ฐ์๊ฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ ๋ด์์ ํน์ ์์ ๋๋ ์ํ ๋ณ๊ฒฝ์ ๋ฒ์๋ฅผ ์ ์ํ๊ณ ์ ์ดํ ์ ์๋๋ก ํ๋ React ๋ด์ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ ๋ฐ์ดํธ๊ฐ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฐ์์ ์ผ๋ก ์ผ์ด๋ ์ ์๋ ๊ธฐ์กด React์ ๋ฌ๋ฆฌ, `experimental_Scope`๋ ๋ ์ธ๋ถํ๋๊ณ ์ง์ญํ๋ ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ ํนํ ํฌ๊ณ ๋ณต์กํ React ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๋ฅ ํฅ์๊ณผ ๋์ฑ ์์ธก ๊ฐ๋ฅํ ๊ฐ๋ฐ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค.
๋ ํฐ React ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ๋ฏธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ์์ค. ๊ฐ ๋ฒ์๋ ์์ฒด ์ํ, ํจ๊ณผ ๋ฐ ๋ ๋๋ง์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค. ์ด๋ ๋์ค์ ์ดํด๋ณผ ์๋ก์ด API๋ฅผ ํตํด ๋ฌ์ฑ๋๋ฉฐ, React ์ปดํฌ๋ํธ์ ์ผ๋ถ๋ฅผ ์ง์ ๋ ๋ฒ์๋ก ๋ํํ ์ ์์ต๋๋ค.
`experimental_Scope`๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ? ์ด์ ๋ฐ ์ฅ์
`experimental_Scope`์ ๋์ ์ ๋ณต์กํ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ ๋ ๊ฐ๋ฐ์๊ฐ ์ง๋ฉดํ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํฅ์๋ ์ฑ๋ฅ: ์ฌ๋ ๋๋ง ๋ฒ์๋ฅผ ์ ํํจ์ผ๋ก์จ `experimental_Scope`๋ ํนํ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ปดํฌ๋ํธ ๋๋ ๋น๋ฒํ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์์ ฏ์ด ์๋ ๋ณต์กํ ๋์๋ณด๋๋ฅผ ์์ํด ๋ณด์ญ์์ค. `experimental_Scope`๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์์ ฏ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ๋ฐ๋์ ์ ์ฒด ๋์๋ณด๋์ ์ฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค.
- ๊ฐ์ ๋ ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ: `experimental_Scope`๋ ๋ ๋์ ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ๋ฅผ ์ด์งํฉ๋๋ค. ๋ฒ์ ๋ด์ ๋ณ๊ฒฝ ์ฌํญ์ ํด๋น ๋ฒ์ ์ธ๋ถ์ ์ปดํฌ๋ํธ์ ์ํฅ์ ๋ฏธ์น ๊ฐ๋ฅ์ฑ์ด ์ ์ผ๋ฏ๋ก ์ฝ๋์ ๋ํด ์ถ๋ก ํ๊ณ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค. ์ด๋ ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ์์ ํ๋ ๋๊ท๋ชจ ํ์์ ํนํ ์ ์ฉํฉ๋๋ค.
- ๊ฐ์ํ๋ ์ํ ๊ด๋ฆฌ: ์ ์๋ ๋ฒ์ ๋ด์์ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋๋ก ํจ์ผ๋ก์จ `experimental_Scope`๋ ํนํ ์์ฒด ๊ณ ์ ํ ์ํ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ ๋๋ ์น์ ์ ๋ํด ์ํ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
- ์ฝ๋ ๋ณต์ก์ฑ ๊ฐ์: ๋ง์ ๊ฒฝ์ฐ `experimental_Scope`๋ ๋ณต์กํ ์ปดํฌ๋ํธ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋จ์๋ก ๋ถํดํ์ฌ ๋ ๊น๋ํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ฝ๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ด๋ ๋น๋ฒํ ์ ๋ฐ์ดํธ ๋ฐ ์์ ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
- ์ต์ ํ๋ ๋ ๋๋ง: ์ฌ๋ ๋๋ง์ ์ ์ดํ๋ ๊ธฐ๋ฅ์ ์ต์ ํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์น์ ์ด ๋ ๋๋ง๋๋ ์๊ธฐ์ ๋น๋๋ฅผ ์ ๋ต์ ์ผ๋ก ๊ฒฐ์ ํ์ฌ ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ป์ ์ ์์ต๋๋ค.
`experimental_Scope` ์๋ ๋ฐฉ์: ์ฃผ์ ๊ฐ๋ ๋ฐ API
ํน์ API๋ ์คํ ๋จ๊ณ์์ ์งํํ ์ ์์ง๋ง ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ปดํฌ๋ํธ ํธ๋ฆฌ ๋ด์์ ๋ฒ์๋ฅผ ์ ์ํ ์ ์๋ ์๋ก์ด ์ปดํฌ๋ํธ ๋๋ ํ ์ ์ค์ฌ์ผ๋ก ํฉ๋๋ค. ๋ช ๊ฐ์ง ๊ฐ์ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ ํํ ๊ตฌ๋ฌธ์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
๊ฐ์ `useScope` ํ :
๊ฐ๋ฅํ ๊ตฌํ ์ค ํ๋๋ `useScope` ํ ์ ํฌํจํ ์ ์์ต๋๋ค. ์ด ํ ์ ์ปดํฌ๋ํธ ํธ๋ฆฌ ์น์ ์ ๋ํํ์ฌ ์ ์๋ ๋ฒ์๋ฅผ ์์ฑํฉ๋๋ค. ๋ฒ์ ๋ด์์ ์ํ ๋ณ๊ฒฝ ๋ฐ ํจ๊ณผ๋ ์ง์ญํ๋ฉ๋๋ค. ๋ค์ ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
import React, { useState, useScope } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
return (
<div>
<button onClick={() => setCount(count + 1)}>Increment</button>
<p>Count: {count}</p>
<Scope>
<OtherComponent /> //Component within the Scope
</Scope>
</div>
);
}
์ด ๊ฐ์ ์์์ `count`์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ `<OtherComponent />`๊ฐ `count` ๋๋ ํ์๋ ๊ฐ์ ์ง์ ์์กดํ์ง ์๋ ํ, ๋ฐ๋์ ์ฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ์ง ์์ต๋๋ค. ์ด๋ `<OtherComponent />`์ ๋ด๋ถ ๋ก์ง๊ณผ ๋ฉ๋ชจ์ด์ ์ด์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. `Scope` ์ปดํฌ๋ํธ๋ ๋ด๋ถ์ ์ผ๋ก ์์ฒด ๋ ๋๋ง ๋ก์ง์ ๊ด๋ฆฌํ์ฌ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ๋ ๋๋งํ ์ ์์ต๋๋ค.
๊ฐ์ `Scope` ์ปดํฌ๋ํธ:
๋๋, ๋ฒ์ ์ง์ ๊ธฐ๋ฅ์ ์ ์ฉ `Scope` ์ปดํฌ๋ํธ๋ฅผ ํตํด ๊ตฌํ๋ ์ ์์ต๋๋ค. ์ด ์ปดํฌ๋ํธ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ์ ์ผ๋ถ๋ฅผ ์บก์ํํ๊ณ ์ง์ญํ๋ ์ ๋ฐ์ดํธ์ ๋ํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋์ ์๊ฐ ๋์ ์์ต๋๋ค.
import React, { useState } from 'react';
function MyComponent() {
const [globalCount, setGlobalCount] = useState(0);
return (
<div>
<button onClick={() => setGlobalCount(globalCount + 1)}>Global Increment</button>
<p>Global Count: {globalCount}</p>
<Scope>
<ScopedCounter globalCount={globalCount} /> // Component using the scope
</Scope>
</div>
);
}
function ScopedCounter({ globalCount }) {
const [localCount, setLocalCount] = useState(0);
return (
<div>
<button onClick={() => setLocalCount(localCount + 1)}>Local Increment</button>
<p>Local Count: {localCount} (Global Count: {globalCount})</p>
</div>
);
}
์ด ์๋๋ฆฌ์ค์์ `ScopedCounter` ๋ด์ `localCount`์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ `ScopedCounter`๊ฐ prop `globalCount`๋ฅผ ์ฌ์ฉํ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ ํด๋น ๋ฒ์ ๋ด์์๋ง ์ฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. React์ ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ `Scope` ์ปดํฌ๋ํธ์ ๊ตฌํ์ ๋ฐ๋ผ `globalCount`๊ฐ ๋ณ๊ฒฝ๋์ง ์์์์ ํ์ ํ ๋งํผ ๋๋ํ ๊ฒ์ ๋๋ค.
์ค์ ์ฐธ๊ณ ์ฌํญ: API ๋ฐ ๊ตฌํ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ธ๋ถ ์ฌํญ์ `experimental_Scope` ๊ธฐ๋ฅ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. ์ต์ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ํญ์ ๊ณต์ React ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์ฌ์ฉ ์ฌ๋ก ๋ฐ ์ค์ฉ์ ์ธ ์: `experimental_Scope`๋ฅผ ์คํํ๊ธฐ
`experimental_Scope`๋ ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค์์ ๋น์ ๋ฐํฉ๋๋ค. ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ธ๋ก๋ฒ ๊ด๋ จ์ฑ๊ณผ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ๋ณต์กํ ๋์๋ณด๋: ๋ฐ๋, ๋ด์, ๋์ฟ์ ํฌ์ ํ์ฌ์์ ์ฌ์ฉํ๋ ๊ธ์ต ๋์๋ณด๋๋ฅผ ์์ํด ๋ณด์ญ์์ค. ๋์๋ณด๋๋ ์ฃผ๊ฐ, ์์ฅ ๋ํฅ, ํฌํธํด๋ฆฌ์ค ์ฑ๊ณผ์ ๊ฐ์ ์ฌ๋ฌ ์์ ฏ์ ํ์ํฉ๋๋ค. `experimental_Scope`๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ์์ ฏ์ ๋ ๋ฆฝ์ ์ธ ๋ฒ์๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ฃผ๊ฐ ์์ ฏ์ ๋ํ ์ ๋ฐ์ดํธ(์: ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋ ๊ธฐ๋ฐ)๊ฐ ๋ฐ๋์ ์ ์ฒด ๋์๋ณด๋๋ฅผ ๋ค์ ๋ ๋๋งํ์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ์ง๋ฆฌ์ ์์น์ ์๊ฐ๋์ ๊ฑธ์ณ ์ค์๊ฐ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ์๋๋ผ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ์ ์ ์๊ฑฐ๋ ํ๋ซํผ: ์ ์ธ๊ณ์ ์ผ๋ก ์ด์๋๊ณ ๋ค์ํ ๊ตญ๊ฐ(์: ์ธ๋, ๋ธ๋ผ์ง, ๋ ์ผ)์์ ๊ณ ๊ฐ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๋๊ท๋ชจ ์ ์ ์๊ฑฐ๋ ํ๋ซํผ์ ๊ณ ๋ คํ์ญ์์ค. ๊ฐ๋ณ ์ ํ ๋ชฉ๋ก ํ์ด์ง๋ `experimental_Scope`์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ฅ๋ฐ๊ตฌ๋์ ํ๋ชฉ์ ์ถ๊ฐํ๋ฉด ์ ์ฒด ์ ํ ๋ชฉ๋ก์ด ์๋ ์ฅ๋ฐ๊ตฌ๋ ์ปดํฌ๋ํธ๋ง ์ ๋ฐ์ดํธํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ํนํ ๋ง์ ์์ ์ ํ ์ด๋ฏธ์ง ๋๋ ๋ณต์กํ ๋ํํ ์์๊ฐ ์๋ ํ์ด์ง์์ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ๋ํํ ๋ฐ์ดํฐ ์๊ฐํ: ์ ์ธ๊ณ ์ฐ๊ตฌ ๊ธฐ๊ด(์: CERN, Max Planck Society)์ ๊ณผํ์๋ค์ด ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์๊ฐํ ๋๊ตฌ๋ ์ข ์ข ๋ณต์กํ ์ฐจํธ์ ๊ทธ๋ํ๋ฅผ ํฌํจํฉ๋๋ค. `experimental_Scope`๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ํน์ ์ฐจํธ์ ์ฌ๋ ๋๋ง์ ๊ฒฉ๋ฆฌํ์ฌ ์ฑ๋ฅ๊ณผ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋ค์ํ ์ง์ญ์ ๊ธฐ์ ํจํด์ ๋ํ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ์๊ฐํด ๋ณด์ญ์์ค.
- ๋๊ท๋ชจ ์์: ๊ตญ์ ๋น์ ์ ์ฒญ ๋๋ ๋ณดํ ์ฒญ๊ตฌ ์ฒ๋ฆฌ์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ๊ฐ์ ๊ด๋ฒ์ํ ์์์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฒ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ์์ ์น์ ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์์์ ํ ์น์ ์์ ๋ณ๊ฒฝ์ ํ๋ฉด ํด๋น ์น์ ๋ง ๋ค์ ๋ ๋๋ง๋์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ํํฉ๋๋ค.
- ์ค์๊ฐ ํ์ ๋๊ตฌ: ์๋๋์ ํ๊ณผ ์ํ๋์์ค์ฝ์ ํ๊ณผ ๊ฐ์ ๋ค๋ฅธ ๊ตญ๊ฐ์ ํ์์ ์ฌ์ฉํ๋ ํ์ ๋ฌธ์ ํธ์ง ๋๊ตฌ๋ฅผ ๊ณ ๋ คํ์ญ์์ค. `experimental_Scope`๋ ๊ฐ ์ฌ์ฉ์์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ด๋ จ๋ ์ ๋ฐ์ดํธ๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋์ด ์ฌ๋ ๋๋ง ์๋ฅผ ์ค์ด๊ณ ํธ์ง ๊ฒฝํ์ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
`experimental_Scope`๋ฅผ ์ฌ์ฉํ ๋ ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ๊ณ ๋ ค ์ฌํญ
`experimental_Scope`๋ ์๋นํ ์ด์ ์ ์ ๊ณตํ์ง๋ง, ํจ์จ์ฑ์ ๊ทน๋ํํ๊ณ ์ ์ฌ์ ์ธ ํจ์ ์ ํผํ๋ ค๋ฉด ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ฌ๋ ๋๋ง ๋ณ๋ชฉ ํ์ ์๋ณ: `experimental_Scope`๋ฅผ ์ ์ฉํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋กํ์ผ๋งํ์ฌ ๋ถํ์ํ๊ฒ ์ฌ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํฉ๋๋ค. React DevTools ๋๋ ๊ธฐํ ์ฑ๋ฅ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํํ ์์ญ์ ์ฐพ์๋ ๋๋ค.
- ์ ๋ต์ ๋ฒ์ ์ง์ : ๋ฒ์๋ฅผ ์ง์ ํด์ผ ํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํ์ญ์์ค. ๋ถํ์ํ ๋ณต์ก์ฑ์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ๊ณผ๋ํ ๋ฒ์๋ฅผ ํผํ์ญ์์ค. ์ฑ๋ฅ์ด ์ค์ํ๊ฑฐ๋ ๋ ๋ฆฝ์ ์ธ ์ํ ์๊ตฌ ์ฌํญ์ด ์๋ ์ปดํฌ๋ํธ์ ์ง์คํ์ญ์์ค.
- ๋ฒ์ ๊ฐ ํต์ : ๋ค๋ฅธ ๋ฒ์ ๋ด์ ์ปดํฌ๋ํธ๊ฐ ํต์ ํ๋ ๋ฐฉ์์ ๊ณํํฉ๋๋ค. ์ปจํ ์คํธ, ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Redux ๋๋ Zustand์ ๊ฐ์ โ ์ปจํ ์คํธ์ ๋ฒ์๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ ์ํ ๊ด๋ฆฌ๋ ๋ฒ์๊ฐ ์ง์ ๋์ด์ผ ํ ์ ์์์ ์ผ๋์ ๋์ญ์์ค) ๋๋ ์ฌ์ฉ์ ์ง์ ์ด๋ฒคํธ ์์คํ ์ ์ฌ์ฉํ์ฌ ๋ฒ์๊ฐ ์ง์ ๋ ์ปดํฌ๋ํธ ๊ฐ์ ์ํธ ์์ฉ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ ๊ฒ ํ๋ ค๋ฉด ์ ์ง ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ์ ์คํ ๊ณํ์ด ํ์ํฉ๋๋ค.
- ํ ์คํ : ์ ๋ฐ์ดํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฒฉ๋ฆฌ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฒ์๊ฐ ์ง์ ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฒ ์ ํ ํ ์คํธํฉ๋๋ค. ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ๋จ์ ํ ์คํธ์ ํตํฉ ํ ์คํธ์ ์ง์คํ์ญ์์ค.
- ์ต์ ์ํ ์ ์ง: `experimental_Scope`๋ ์คํ์ ์ธ ๊ธฐ๋ฅ์ ๋๋ค. API ๋ณ๊ฒฝ, ๋ฒ๊ทธ ์์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ป์ผ๋ ค๋ฉด ์ต์ React ์ค๋ช ์ ๋ฐ ์ปค๋ฎค๋ํฐ ํ ๋ก ์ ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค.
- ๋์ ๊ณ ๋ ค: `experimental_Scope`๋ ๋ง๋ณ ํต์น์ฝ์ด ์๋๋๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ memoization(์: `React.memo` ์ฌ์ฉ), ์ฝ๋ ๋ถํ ๋๋ ๊ฐ์ํ๋ ๋ชฉ๋ก๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ต์ ํ ๊ธฐ์ ์ด ๋ ์ ํฉํ ์ ์์ต๋๋ค. ์ ์ถฉ์์ ํ๊ฐํ๊ณ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ์ ๊ทผ ๋ฐฉ์์ ์ ํํ์ญ์์ค.
- ๊ณผ๋ํ ์ต์ ํ ๋ฐฉ์ง: ์ ํ๋ฆฌ์ผ์ด์ ์ ์กฐ๊ธฐ์ ์ต์ ํํ์ง ๋ง์ญ์์ค. ๋จผ์ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ง์คํ์ญ์์ค. ๊ทธ๋ฐ ๋ค์ ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ `experimental_Scope`๋ฅผ ๊ฐ์ฅ ์ ์ฉํ ๊ณณ์ ์ ์ฉํ์ญ์์ค.
`experimental_Scope`๋ฅผ ์ฌ์ฉํ ์ฑ๋ฅ ํ๋กํ์ผ๋ง
`experimental_Scope`์ ์ํฅ์ ์ดํดํ๋ ค๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ ๊ฐ๋ฐ์ ๋๊ตฌ ๋๋ React DevTools๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ฒ์ ์ง์ ์ ๊ตฌํํ๊ธฐ ์ ๊ณผ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋กํ์ผ๋งํ์ฌ ์ฑ๋ฅ ํฅ์์ ์ธก์ ํฉ๋๋ค. ๋ชจ๋ํฐ๋งํ ์ฃผ์ ์งํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ ๋๋ง ์๊ฐ: ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. `experimental_Scope`๋ ๋ฒ์๊ฐ ์ง์ ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์๊ฐ์ ์ค์ฌ์ผ ํฉ๋๋ค.
- ์ฌ๋ ๋๋ง: ์ปดํฌ๋ํธ๊ฐ ์ฌ๋ ๋๋ง๋๋ ํ์๋ฅผ ์ถ์ ํฉ๋๋ค. `experimental_Scope`๋ ๋ถํ์ํ ์ฌ๋ ๋๋ง ์๋ฅผ ์ค์ฌ์ผ ํฉ๋๋ค.
- CPU ์ฌ์ฉ๋: ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ง์ ์ฒ๋ฆฌ ์ ๋ ฅ์ ์๋นํ๋ ์์ญ์ ์๋ณํ๊ธฐ ์ํด CPU ์ฌ์ฉ๋์ ๋ถ์ํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: `experimental_Scope`๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋๋ ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ์ ๋ฐํ์ง ์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
์ํ ๋ณ๊ฒฝ ํ ๋ฐ์ํ๋ ๋ ๋๋ง ํ์๋ฅผ ์ธก์ ํ๊ณ `experimental_Scope`์ ์ฑ๋ฅ ์ํฅ์ ๋ถ์ํ๋ ค๋ฉด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๊ตญ์ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๋ ค ์ฌํญ
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ๋๋ ๋ค์ ์ฌํญ์ ์ผ๋์ ๋์ญ์์ค.
- ํ์งํ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๋ฌ ์ธ์ด์ ๋ฌธํ๋ฅผ ์ง์ํ๋์ง ํ์ธํ์ญ์์ค. i18n ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ๋ฒ์ญํ๊ณ , ๋ ์ง์ ํตํ๋ฅผ ํ์ํํ๊ณ , ๋ค๋ฅธ ์ซ์ ์์คํ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ค์ํ ๋คํธ์ํฌ ํ๊ฒฝ์์์ ์ฑ๋ฅ: ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฌ๊ฑฐ๋ ๋ถ์์ ํ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ญ์์ค. ์ฝ๋ ๋ถํ , ์ง์ฐ ๋ก๋ฉ ๋ฐ ์ด๋ฏธ์ง ์ต์ ํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์ ๊ทผ์ฑ: ์ฅ์ ๊ฐ ์๋ ์ฌ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ ์ ์๋๋ก ์ ๊ทผ์ฑ ํ์ค์ ์ค์ํ์ญ์์ค. ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๊ณ , ์๋งจํฑ HTML์ ์ฌ์ฉํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ด ํค๋ณด๋๋ก ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ์ญ์์ค.
- ์๊ฐ๋ ์ฒ๋ฆฌ: ํนํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ก ๋ค๋ฅธ ์ง์ญ์์ ์๊ฐ์ ๋ฏผ๊ฐํ ์ผ์ ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ ์๊ฐ๋๋ฅผ ์ ํํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค.
- ํตํ ๋ฐ ๊ธ์ต ๊ท์ : ๊ธ์ต ๊ฑฐ๋์ ๊ด๋ จ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ๋ค์ํ ๊ตญ๊ฐ์ ๋ค๋ฅธ ํตํ, ์ธ๊ธ ๊ท์ ๋ฐ ๋ฒ์ ์๊ตฌ ์ฌํญ์ ์ธ์งํ์ญ์์ค.
- ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ: ๋ฐ์ดํฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ท์ (์: GDPR, CCPA)์ ์ธ์งํ๊ณ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๊ฒ ๋ณดํธํ์ญ์์ค. ์ด๋ ๋ค๋ฅธ ๊ตญ๊ฐ์ ์ฌ์ฉ์๊ฐ ์๋ ๊ตญ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ์ค์ํฉ๋๋ค.
- ๋ฌธํ์ ๋ฏผ๊ฐ์ฑ: ๋ฌธํ์ ์ฐจ์ด๋ฅผ ์ผ๋์ ๋๊ณ ํน์ ๋ฌธํ์์ ๋ถ์พํ๊ฑฐ๋ ๋ถ์ ์ ํ ์ ์๋ ์ธ์ด, ์ด๋ฏธ์ง ๋๋ ๋์์ธ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ์ด๋ ํ ์คํธ๋ฟ๋ง ์๋๋ผ ์ ๊ตฌ์ฑํ, ์์ด์ฝ ๋ฐ ๊ธฐํ ์๊ฐ์ ์์์๋ ์ ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ๊ณ ๋ ค ์ฌํญ์ ํตํฉํ์ฌ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
`experimental_Scope` ๋ฐ React์ ๋ฏธ๋
`experimental_Scope` ๊ธฐ๋ฅ์ React์ ์ฑ๋ฅ๊ณผ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํ ์ค์ํ ๋จ๊ณ์ ๋๋ค. React๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ด ๊ธฐ๋ฅ ๋๋ ์ด์ ์ ์ฌํ ๊ธฐ๋ฅ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ ๋ถ๋ถ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ํฅํ ๊ฐ๋ฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ์ธ๋ จ๋ API: `experimental_Scope`์ API๋ ๊ฐ๋ฐ์ ํผ๋๋ฐฑ๊ณผ ์ค์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- ํฅ์๋ DevTools ํตํฉ: ์ปดํฌ๋ํธ ๋ฒ์ ๋ฐ ์ฑ๋ฅ ํน์ฑ์ ๋ํ ๋ ๋์ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ธฐ ์ํด React DevTools์์ ํฅ์๋ ํตํฉ.
- ์๋ํ๋ ์ต์ ํ ๋๊ตฌ: ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ปดํฌ๋ํธ ๋ฒ์ ์ง์ ์ ์ํ ๊ธฐํ๋ฅผ ์๋์ผ๋ก ์๋ณํ๊ณ ์ ์ํ ์ ์๋ ๋๊ตฌ.
- Concurrent Mode์์ ํตํฉ: React์ Concurrent Mode์์ ์ํํ ํตํฉ์ผ๋ก ์ฑ๋ฅ๊ณผ ์๋ต์ฑ์ ๋์ฑ ํฅ์์ํต๋๋ค.
์ต์ ๊ฐ๋ฐ ์ํฉ์ ๊ณ์ ํ์ ํ๋ ค๋ฉด React ์ปค๋ฎค๋ํฐ ๋ฐ ๊ณต์ ๋ฆด๋ฆฌ์ค์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ผ์ญ์์ค. ์ด ๊ธฐ๋ฅ์ ์์ผ๋ก ๋ช ๋ ๋์ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๊ฒฐ๋ก : `experimental_Scope`์ ํ ์์ฉ
`experimental_Scope`๋ React ์ํ๊ณ์ ์ ๋งํ ์ถ๊ฐ ๊ธฐ๋ฅ์ผ๋ก, ์ฑ๋ฅ ์ต์ ํ, ์ปดํฌ๋ํธ ๊ฒฉ๋ฆฌ ๊ฐ์ ๋ฐ ์ํ ๊ด๋ฆฌ ๋จ์ํ๋ฅผ ์ํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์์ง ์คํ์ ์ด์ง๋ง ์ ์ฌ์ ์ธ ์ด์ ์ ํนํ ๋๊ท๋ชจ, ์ ์ธ๊ณ์ ์ผ๋ก ์ฌ์ฉ๋๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ค์ํฉ๋๋ค. ๊ฐ๋ ์ ์ดํดํ๊ณ , ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๊ณ , ๋ฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์งํจ์ผ๋ก์จ `experimental_Scope`์ ํ์ ํ์ฉํ์ฌ ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ก์ `experimental_Scope`์ ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์์ฉํ๋ ๊ฒ์ ๋์์์ด ๋ณํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ์ก๋ ๋ฐ ํ์์ ์ ๋๋ค. ์ด๋ฌํ ์คํ์ ๊ธฐ๋ฅ์ ํจ๊ณผ์ ์ผ๋ก ํตํฉํ๋ ค๋ฉด ์ ์คํ ํ๊ฐ, ํ ์คํธ ๋ฐ ์ง์์ ์ธ ํ์ต์ด ์ค์ํฉ๋๋ค.
React ํ์ ์ง์์ ์ผ๋ก ํ์ ์ ๊ฑฐ๋ญํ๊ณ ์์ผ๋ฉฐ `experimental_Scope`๋ ๊ฐ๋ฐ์์๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ์์ ๊ฐ์ ํ๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ค๋ ๋ ธ๋ ฅ์ ๋ณด์ฌ์ฃผ๋ ์ฆ๊ฑฐ์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์ฑ์ํด์ง๊ณ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ณต์ React ์ค๋ช ์ ๋ฐ ์ปค๋ฎค๋ํฐ ๋ฆฌ์์ค๋ฅผ ์ฃผ์ํ์ฌ ์ ๋ฐ์ดํธ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ์ธํ์ญ์์ค. ์ด๋ฌํ ์๋ก์ด ๊ธฐ๋ฅ์ ์์ฉํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋ฟ๋ง ์๋๋ผ ๋ณํํ๋ ๊ธ๋ก๋ฒ ์น์ ์๊ตฌ ์ฌํญ์ ์ ์ํ ์ ์๋๋ก ํ ์ ์์ต๋๋ค.