props๋ ์ปดํฌ๋ํธ์ ์์ฑ๊ฐ์ ์๋ฏธํ๋ฉฐ, ๋ ์ ํํ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด์ด๋ค.
props๋ฅผ ์ด์ฉํด์ ์ ๋ฌํ๊ณ ์ ํ๋ ์ด๋ค ๊ฐ์ด๋ (๋ณ์, ํจ์, state๊ฐ, event handler ๋ฑ..) ๋ชจ๋ ์์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ ์ ์๋ค.
์๋ ์ฝ๋์ ์ปดํฌ๋ํธ์์๋ '๊ฐ์์ง'๋ผ๋ ๋ฌธ์์ด์ animal์ด๋ผ๋ ๋ณ์์ ๋ด์ ๊ด๋ฆฌํ๋ค.
์ฌ๊ธฐ์์ animal์ด๋ผ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด
{animal}
๊ณผ ๊ฐ์ด ํ๋ฉด์ ํ๊ธฐํ ์ ์๋ค.import React from 'react';
const Parent = () => {
const animal = '๊ฐ์์ง';
return (
<>
<h1>๋ถ๋ชจ ์ปดํฌ๋ํธ์
๋๋ค.</h1>
<p>{animal}</p>
</>
);
};
export default Parent;
๋ง์ฝ์ Parent ์ปดํฌ๋ํธ์ ํ์ ์ปดํฌ๋ํธ์ธ Child ์ปดํฌ๋ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด ์ปดํฌ๋ํธ์์๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ ๋๊ฐ์ด ํ๋ฉด์ '๊ฐ์์ง'๋ผ๋ ๋ฌธ์์ด์ ํํํ๊ณ ์ถ์ ๋ props๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
// Parent.js (๋ถ๋ชจ ์ปดํฌ๋ํธ)
import React from 'react';
const Parent = () => {
const animal = '๊ฐ์์ง';
return (
<>
<h1>๋ถ๋ชจ ์ปดํฌ๋ํธ์
๋๋ค.</h1>
<p>{animal}</p>
<child pet={animal} englishName="dog" />
</>
);
};
export default Parent;
๋จผ์ Child ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ import๋ฅผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ Child ์ปดํฌ๋ํธ๋ฅผ return ๋ฌธ ๋ด์ ๋ฃ์ด์ค๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ์ปดํฌ๋ํธ๋ก ๋ณด๋ด์ด์ฃผ์ด์ผ ํ ๊น?
์์ ์ฝ๋์์ ๋ณด๋ฉด ๋ถ๋ชจ ์บํฌ๋ํธ์๋ ์ด๋ฏธ ์ ์ธ์ด ๋์ด์๊ณ , ์์ ์ปดํฌ๋ํธ์์๋ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ animal์ด๋ผ๋ ๋ณ์์ด๋ค.
๋ณด๋ด์ฃผ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๊ฐ ํ์
๋์๋ค๋ฉด ํ๊ทธ์ ์์ฑ์ ์ฃผ์
ํ๋ฏ pet={animal} ๊ณผ ๊ฐ์ด ์์ ์ปดํฌ๋ํธ์ ์์ฑ ๊ฐ์ ์ถ๊ฐํด์ค๋ค.
์ฌ๊ธฐ์์ pet์ ์์ ์ปดํฌ๋ํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ ์ฌ์ฉ๋๋ ์ธ์ํ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
'๊ฐ์์ง'๋ผ๋ ๋ฐ์ดํฐ๊ฐ animal์ด๋ผ๋ ๊ทธ๋ฆ์ ๋ด๊ฒจ์๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์ ์ธ๋ animal์ด๋ผ๋ ๋ณ์๋ฅผ ์์ ์ปดํฌ๋ํธ์ ๋๊ฒจ์ค ๋ pet์ด๋ผ๋ ๊ทธ๋ฆ์ ๋ด์ ๋ณด๋ด์ฃผ๋ ๊ฒ !
// Child.js(์์ ์ปดํฌ๋ํธ)
import React from 'react';
const Child = (props) => {
return (
<>
<h2>์์ ์ปดํฌ๋ํธ์
๋๋ค.</h2>
<p>{props.pet}</p> // ๊ฐ์์ง
<p>{props.englishName}</p> // dog
</>
);
};
export default Child;
ํจ์์์ ์ธ์๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๋ฏ, ํจ์ ์ปดํฌ๋ํธ ๋ํ const Child = (๋งค๊ฐ๋ณ์) => {} ์ ๊ฐ์ด ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ๋ณด๋ด์ค ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
์์ ์ปดํฌ๋ํธ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ๋ฐ์ props๋ฅผ ํํํ๋ค๋ ๊ฒ์ ๋ช
์์ ์ผ๋ก ๋ํ๋ด๊ธฐ ์ํด const Child = (props) => {}๋ผ๊ณ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ props๋ก ์ง๋๊ฒ์ด ์ปจ๋ฒค์
์ด๋ผ๊ณ ํ๋ค.
{props.pet} | {props.englishName}์ผ๋ก ๊ฐ์ฒด์ ์ ๊ทผํ๋ฉด ์ํ๊ณ ์ ํ๋ '๊ฐ์์ง'์ 'dog'์ ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
ํจ์๋ฅผ ๋ณด๋ด๊ณ ์ ์ฉ์ํฌ ๋๋ ์ด๋ป๊ฒ ํ ์ ์์๊น?
import React from 'react';
import Child from './Child'/
const Parent = () => {
const testConsole = () => {
console.log('ํ
์คํธ');
};
return (
<>
<h1>๋ถ๋ชจ ์ปดํฌ๋ํธ</h1>
<button onClick={testConsole}>ํด๋ฆญ</button>
<Child test={testConsole} />
</>
);
};
export default Parent;
๋ถ๋ชจ ์ปดํฌ๋ํธ์ testConsole์ด๋ผ๋ ํจ์๋ฅผ ์ ์ธํ๊ณ , ๋ฒํผ์ ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๊ฑธ์ด์ฃผ์๋ค.
ํด๋น ํจ์๋ฅผ ์์ ์ปดํฌ๋ํธ์์๋ ์ฌ์ฉํ๊ณ ์ถ์ ๋, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์๋ ์ ๋ฌํ๊ณ ์ ํ๋ ํจ์๋ฅผ ์ด๋ค ์ด๋ฆ์ผ๋ก ๋๊ฒจ์ค์ง ์ ํด์ค๋ค. ์์ ์ฝ๋์์๋ test๋ผ๋ ์ด๋ฆ์ผ๋ก ๋๊ฒจ์ฃผ๋๋ก ์ ํด์ค ๊ฒ!
// Child.js (์์ ์ปดํฌ๋ํธ)
import React from 'react';
const Child = (props) => {
console.log(props); // {test: () => {console.log('ํ
์คํธ')}}
return (
<>
<h2>์์ ์ปดํฌ๋ํธ</h2>
<button onClick={props.test}>ํด๋ฆญ</button>
</>
);
};
export default Child;
์์ ์ปดํฌ๋ํธ์์ ํจ์๋ฅผ props๋ก ๋ฐ์์ props.test๋ก ๋ถ๋ฌ๋ค ์ฌ์ฉํ ์ ์๋ค.