Component์ ์ฌ์ ์ ์ ์๋ ๋ ๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋นํธ์ด๋ค. Javascript ํจ์์ ๋์ผํ ๋ชฉ์ ์ ์ ๊ณตํ์ง๋ง ๋ถ๋ฆฌ๋์ด ์๋ํ๊ณ HTML์ ๋ฐํํ๋ค.
Component๋ ํด๋์ค ๊ตฌ์ฑ ์์์ ํจ์ ๊ตฌ์ฑ์์์ ๋ ๊ฐ์ง ์ ํ์ผ๋ก ์ ๊ณต๋๋ฉฐ ์ด ์์ต์์์๋ ํจ์ ๊ตฌ์ฑ ์์์ ์ง์คํ๋ค.
์ฌ์ ์ ์ ์๋ง๊ณ ์ด์ Component๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์.
๊ธฐ์กด ์ฐ๋ฆฌ๊ฐ ๋ฐ์ค๋ฅผ ํ๋ ๋ง๋ค๋ฉด.
<div>
<div className='box'>
box1
<p>๋๋ ๋ฐ์ค.</p>
</div>
</div>
.box{
width: 100px;
height: 100px;
border: 1px solid red;
}
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ง๋ค์๋ค. ์ด๊ฒ์ ๋ช๊ฐ๋ฅผ ๋ง๋ ๋ค๋ฉด ์ ์ฝ๋๋ฅผ ๋ณต์ฌํด์ 3๋ฒ์ ์ ๋ ฅํด์ผ ํ๋ค. ํ์ง๋ง ๋ฆฌ์กํธ๋ฅผ Component๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์์ฒญ ํธ๋ฆฌํด์ง๋ค.
ํ์ฌ ์์
ํ๋ ํด๋์ js
ํ์ผ์ ํ๋ ์๋ก๋ง๋ ๋ค. ๋ง๋ js
ํ์ผ์ ๋ฐ์ค๋ฅผ ๋ง๋๋ ์ฝ๋๋ฅผ ๋ณต์ฌํด ์ฎ๊ฒจ ๋ด๋๋ค. ์๋ฅผ ๋ค์ด Box.js
ํ์ผ์ ๋ฃ์ด๋ณธ๋ค.
์ฌ๊ธฐ์ ํ์ผ์ ๋ฃ๊ธฐ์ ์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋ค. rafce
๋ฅผ ์
๋ ฅํด์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ๋์จ๋ค.
import React from 'react'
const Box = () => {
return (
<div>Box</div>
)
}
export default Box
โ ๋ง์ฝ ๋จ์ถํค๊ฐ ์๋์ค๋ ๊ฒฝ์ฐ๋ extention๋ฅผ ์ค์นํด์ผํ๋ค.
โ ์ปดํฌ๋ํธ ๋ง๋ค ์ ์ฃผ์์ฌํญ
์ปดํฌ๋ํธ์ ์ด๋ฆ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์ํด์ผํ๋ค.
๋๋ฌธ์๋ก ์์ํ์ง๋ง ์์ผ๋ฉด HTMLํ๊ทธ๋ก ๋ถ๋ฅํด ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์๋ฌ๋ฅผ ์ด๋ฅดํจ๋ค.
์์ ๊ฐ์ด ์ฝ๋๊ฐ ๋์๋ค๋ฉด ์๊น ์ฒ์ ๋ง๋ค์๋ HTMLํ๊ทธ๋ค์ ๋ถ์ฌ๋ฃ๋๋ค.
import React from 'react'
const Box = () => {
return (
<div className='box'>
box1
<p>๋๋ ๋ฐ์ค.</p>
</div>
)
}
export default Box
์ Box.js
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ App.js
ํ์ผ์ ์์ ์ ์ผ ์์ import Box from './component/Box';
๋ฅผ ์
๋ ฅํ์ฌ Box.js
ํ์ผ๊ณผ ์ฐ๊ฒฐ์์ผ์ค๋ค.
๊ทธ ์ดํ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
function App() {
return (
<div>
<Box/>
<Box/>
<Box/>
</div> //jsx ์ ํ์ค์์ ์ฃผ์ํ ์ . ๋ฐ๋์ ํ๋๋ก ๋ฌถ์ด์ผํ๋ค.
);
}
์ด๋ ๊ฒ Component๋ก ์ฝ๊ฒ ๋ฐ์ค๋ฅผ ๋ง๋ค ์ ์๋ค. ์ ๊ทผ๋ฐ ์ฌ๊ธฐ์ ๋ฐ์ค ์์ ์๋ ๋ด์ฉ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋. App.js
์ name
๊ฐ๊ณผ num
๊ฐ์ ์ถ๊ฐํ๋ค.
import './App.css';
import Box from './component/Box';
function App() {
return (
<div>
<Box name="๋ ๋ฐ์ค1" num={1}/>
<Box name="๋ ๋ฐ์ค2" num={2}/>
<Box name="๋ ๋ฐ์ค3" num={3}/>
</div> //jsx ์ ํ์ค์์ ์ฃผ์ํ ์ . ๋ฐ๋์ ํ๋๋ก ๋ฌถ์ด์ผํ๋ค.
);
}
export default App;
๊ทธ๋ฆฌ๊ณ ๋ค์ Box.js
ํ์ผ๋ก ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ๋ฉด ๋๋ค.
import React from 'react'
const Box = (props) => { //props๋ ํจ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์กด์ฌ์ด๋ค.
return (
<div className='box'>
Box{props.num} //props์ num๊ฐ์ ๋ฐ๋๊ฒ์ด๋ค.
<p>{props.name}</p>
</div>
)
}
export default Box
๊ทธ๋ผ ์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ค.
Props
๋ React ๊ตฌ์ฑ ์์์ ์ ๋ฌ๋๋ ์ธ์์ด๋ค. props
์ HTML ์์ฑ์ ํตํด ๊ตฌ์ฑ ์์์ ์ ๋ฌ๋ฉ๋๋ค.
import './App.css';
import Box from './component/Box';
function App() {
return (
<div>
<Box name="๋ ๋ฐ์ค1" num={1}/>
<Box name="๋ ๋ฐ์ค2" num={2}/>
<Box name="๋ ๋ฐ์ค3" num={3}/>
</div> {/*jsx ์ ํ์ค์์ ์ฃผ์ํ ์ . ๋ฐ๋์ ํ๋๋ก ๋ฌถ์ด์ผํ๋ค.*/}
);
}
export default App;
import React from 'react'
const Box = (props) => { //props๋ ํจ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์กด์ฌ์ด๋ค.
return (
<div className='box'>
Box{props.num} //props์ num๊ฐ์ ๋ฐ๋๊ฒ์ด๋ค.
<p>{props.name}</p>
</div>
)
}
export default Box
Box ์ปดํฌ๋ํธ์ name
๊ณผ num
์ ์์ฑ์ ๋ฃ์๋ค. ๊ทธ๊ฒ์ ๋ฐ๋ ๊ฒ์ด props
์ด๋ค.
ํจ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์กด์ฌ์ธ ๊ฒ ์ด๋ค. ๊ทธ๋์ props
๋ก ์ธํด ๋ค์ด๋๋ฏน ํ ๊ฐ์ ์ง์ ํด ์ค ์ ์๋ ๊ฒ ์ด๋ค. props.num
์ Box ์ปดํฌ๋ํธ์ ํ ๋นํ num
์์ฑ ๊ฐ์ด ์ง์ ๋๋ ๊ฒ์ด๊ณ props.name
์ Box ์ปดํฌ๋ํธ์ ํ ๋นํ name
๊ฐ์ด ์ ์ ๋๋ ๊ฒ์ด๋ค.