Props Drilling
์ด๋ props๋ฅผ ํตํด ํ์ ์ปดํฌ๋ํธ๋ก data๋ฅผ ๋๊ฒจ์ค๋ 3~5๊ฐ ์ ๋์ ์ปดํฌ๋ํธ๋ผ๋ฉด ๊ด๋ฆฌํ๊ธฐ์ ์ด๋ ต์ง ์์ง๋ง 10๊ฐ 20๊ฐ 30๊ฐ .. ์ ๋ฌํด์ผํ๋ ์ปดํฌ๋ํธ๋ค์ ๊ฐฏ์๊ฐ ๋ง์์ง์๋ก ์ ์ง๋ณด์ํ ๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๊ฒ์ ๋งํฉ๋๋ค.
์๋ ์์๋ฅผ ํตํด Props Drilling
์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
import React from 'react';
function App() {
const data = `๋๋์ด ๋์ฐฉ`;
return (
<div>
<One data={data} />
</div>
);
}
function One({ data }) {
return (
<div>
<h3>์ฒซ๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Two data={data} />
</div>
);
}
function Two({ data }) {
return (
<div>
<h3>๋๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Three data={data} />
</div>
);
}
function Three({ data }) {
return (
<div>
<h3>์ธ๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Four data={data} />
</div>
);
}
function Four({ data }) {
return (
<div>
<h3>๋ค๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<ShowProps data={data} />
</div>
);
}
function ShowProps({ data }) {
return <h3>{data}</h3>;
}
export default App;
์์ ๊ฐ์ด data๋ผ๋ props๋ฅผ ์ตํ๋จ์ ์์ ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ๋ฌํ๊ณ ์๊ณ ์ด๋ ์์ ๋ถ๋ชจ์ ์์ ์ปดํฌ๋ํธ ์ฌ์ด์ ๊น์ด๊ฐ ์ปค์ ธ ๊ด๋ฆฌํ๋๊ฒ์ ๋ํ ์ด๋ ค์์ด ์์ต๋๋ค.
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ด ์กด์ฌํ๋๋ฐ ๋ํ์ ์ผ๋ก๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์
๋๋ค. ๋ํ์ ์ผ๋ก๋ redux
, MobX
๋ฑ์ด ์กด์ฌํฉ๋๋ค. ๋ํ useContext
๋ผ๋ React Hook์ ์ฌ์ฉํ ์ ์๋๋ฐ ์ฐ๋ฆฌ๋ useContext
๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
import React, { useContext } from 'react';
import { DataContext } from './hooks/DataContext';
function App() {
const data = `๋๋์ด ๋์ฐฉ`;
return (
<DataContext.Provider value={data}>
<One />
</DataContext.Provider>
);
}
function One() {
return (
<div>
<h3>์ฒซ๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Two />
</div>
);
}
function Two() {
return (
<div>
<h3>๋๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Three />
</div>
);
}
function Three() {
return (
<div>
<h3>์ธ๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<Four />
</div>
);
}
function Four() {
return (
<div>
<h3>๋ค๋ฒ์งธ ์ปดํฌ๋ํธ ์
๋๋ค.</h3>
<ShowProps />
</div>
);
}
function ShowProps() {
const data = useContext(DataContext);
return <h3>{data}</h3>;
}
export default App;
๋ค๋ง useContext
๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ ์ง ์ ์์ด์ ๊ผญ ํ์ํ ๋๋ง ์ฌ์ฉํด์ผ ํ๊ณ ๋ง์ผ Props drilling์ ํผํ๊ธฐ ์ํ ๋ชฉ์ ์ด๋ผ๋ฉด Component Composition ( ์ปดํฌ๋ํธ ํฉ์ฑ )์ ๋จผ์ ๊ณ ๋ คํด์ผ ํ๋ค.