โ๏ธ ๋ฒ์ธ) fragment ๋ฌธ๋ฒ
return(
<div>
<div></div>
<div></div>
</div>
)
- HTML ์ฝ๋๋ฅผ ์งค ๋, return() ๋ด๋ถ๋ ํ๋์ ํ๊ทธ๋ก ์์ํด์ ํ๋์ ํ๊ทธ๋ก ๋๋์ผ ํจ!
- ๊ทธ๋์ ๊ตณ์ด <div> ๋๊ฐ๋ฅผ ๋๋ํ ์ ๊ณ ์ถ์ผ๋ฉด ์์ ๊ฐ์ด ํ๋์ div๋ก ๋ ๊ฐ์ธ๊ฑฐ๋, <></>๋ก ๊ฐ์ธ์ผ ํจ!
โ๏ธ Component
- ๊ธด HTML์ ํ ๋จ์ด๋ก ๊น๋ํ๊ฒ ์นํํด์ ๋ฃ์ ์ ์๋ ๋ฌธ๋ฒ
function App (){
return (
<div>
(์๋ต)
<Modal></Modal>
</div>
)
}
function Modal(){
return (
<div className="modal">
<h4>์ ๋ชฉ</h4>
<p>๋ ์ง</p>
<p>์์ธ๋ด์ฉ</p>
</div>
)
}
1) ์ค์ด๋ ๋ฒ
1. function์ ์ด์ฉํด ํจ์๋ฅผ ํ๋ ๋ง๋ค๊ณ ์๋ช
.
2. ๊ทธ ํจ์ ์์ return() ์์ ์ถ์ฝ์ ์ํ๋ HTML ๋ด์.
3. ๊ทธ๋ผ ์ํ๋ ๊ณณ์์ <ํจ์๋ช
></ํจ์๋ช
> ์ฌ์ฉํ๋ฉด ์๊น ์ถ์ฝํ HTML ๋ฑ์ฅ.
- ์ด๋ ๊ฒ ์ถ์ฝํ HTML ๋ฉ์ด๋ฆฌ๋ฅผ Component๋ผ๊ณ ๋ถ๋ฆ!
2) Component ๋ง๋ค ๋ ์ฃผ์์
- component ์๋ช
ํ ๋ ์์ด ๋๋ฌธ์๋ก ๋ณดํต ์๋ช
- return() ์์ HTML ํ๊ทธ๋ค์ด ํํํ๊ฒ ์ฌ๋ฌ ๊ฐ ๋ค์ด๊ฐ ์ X
- function App(){} ๋ด๋ถ์์ ๋ง๋ค๋ฉด X
- <์ปดํฌ๋ํธ></์ปดํฌ๋ํธ> ๋๋ <์ปดํฌ๋ํธ/>
3) ์ด๋ค HTML๋ค์ Component๋ก ๋ง๋๋ ๊ฒ ์ข์๊น
- ์ฌ์ดํธ์ ๋ฐ๋ณตํด์ ์ถํํ๋ HTML ๋ฉ์ด๋ฆฌ๋ค
- ๋ด์ฉ์ด ์์ฃผ ๋ณ๊ฒฝ๋ ๊ฒ ๊ฐ์ HTML ๋ถ๋ถ
- ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๊ทธ ํ์ด์ง์ HTML ๋ด์ฉ
- ๋ค๋ฅธ ํ์๊ณผ ํ์
ํ ๋ ์นํ์ด์ง๋ฅผ Component ๋จ์๋ก ๋์์ ์์
๋ถ๋ฐฐ ๋ฑ๋ฑ..
4) Component์ ๋จ์
- Component๋ฅผ ์๋ฐฑ๊ฐ ๋ง๋ค๋ฉด ๊ด๋ฆฌ๊ฐ ์ด๋ ค์, ๋๋ฌด ์ชผ๊ฐ์ง ๋ง๊ณ ๊ผญ ํ์ํ ๊ณณ๋ง Component๋ก ์ชผ๊ฐ ์ฌ์ฉํ ๊ฒ!
โ๏ธ ๋์ ์ธ UI ๋ง๋๋ Step(๋ชจ๋ฌ์ฐฝ ๊ธฐ๋ฅ)
step 1. html css ๋ฏธ๋ฆฌ ๋์์ธํด๋๊ธฐ.
step 2. UI์ ํ์ฌ ์ํ๋ฅผ state๋ก ์ ์ฅ.
let [modal, setModal] = useState(false);
- state๋ฅผ ํ๋ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํ์ฌ UI์ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅ
step 3. state์ ๋ฐ๋ผ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์์ฑ.
function App (){
let [modal, setModal] = useState(false);
return (
์ state๊ฐ true๋ฉด <Modal></Modal>
false๋ฉด ์๋ฌด๊ฒ๋ ๋ณด์ฌ์ฃผ์ง๋ง์ธ์
)
}
- ์ผํญ์ฐ์ฐ์(if๋ฌธ๊ณผ ์ญํ ๋น์ท) ์ฌ์ฉ
1) JSX์์ ์กฐ๊ฑด๋ฌธ ์ฐ๋ ๋ฒ
- jsx์์๋ if ๋ฌธ๋ฒ ๋์ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํจ
// ์กฐ๊ฑด์ ? ์กฐ๊ฑด์ ์ฐธ์ผ ๋ ์คํํ ์ฝ๋ : ์กฐ๊ฑด์ ๊ฑฐ์ง์ผ ๋ ์คํํ ์ฝ๋
3 > 1 ? console.log('๋ง์') : console.log('์๋')
๐โ๏ธ ๊ธ์ ๋ชฉ ๋๋ฅด๋ฉด ๋ชจ๋ฌ์ฐฝ ๋์ฐ๊ธฐ
function App (){
let [modal, setModal] = useState(false);
return (
<div>
(์๋ต)
<button onClick={ ()=>{ setModal(!modal) } }> {๊ธ์ ๋ชฉ[0]} </button>
{
modal == true ? <Modal></Modal> : null
}
</div>
)
}
- ๊ธ์ ๋ชฉ ํด๋ฆญ์ ์ง๊ธ state๊ฐ true๋ฉด setModal(false), false๋ฉด setModal(true)
โ๏ธ JS map ํจ์
- JSX ์ค๊ดํธ ์์์๋ for ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ์ ์๊ณ ๋์ map()์ ์ฌ์ฉํ๋ค!
๊ธฐ๋ฅ 1. array์ ๋ค์ด์๋ ์๋ฃ ๊ฐฏ์๋งํผ ๊ทธ ์์ ์๋ ์ฝ๋ ๋ฐ๋ณต ์คํ
var array1 = [2,3,4];
array1.map(function(){
console.log(1)
});
// ๊ฒฐ๊ณผ
console.log(1)
console.log(1)
console.log(1)
๊ธฐ๋ฅ 2. ์ฝ๋ฐฑ ํจ์์ ํ๋ผ๋ฏธํฐ ์๋ฌด๋ ๊ฒ๋ ์๋ช ํ๋ฉด ๊ทธ ํ๋ผ๋ฏธํฐ๋ ๋ฐฐ์ด ์์ ์๋ ๋ชจ๋ ์๋ฃ๋ฅผ ํ๋์ฉ ์ถ๋ ฅ(์๊ดํธ ์์ ์๋ ํจ์๋ฅผ ์ฝ๋ฐฑํจ์๋ผ๊ณ ํจ)
var array2 = [2,3,4];
array2.map(function(a){
console.log(a)
});
// ๊ฒฐ๊ณผ
2, 3, 4
๊ธฐ๋ฅ 3. return ์ค๋ฅธ์ชฝ์ ๋ญ ์ ์ผ๋ฉด array๋ก ๋ด์์ค๋ค. ๊ทธ๋ฆฌ๊ณ map() ์ด ์๋ฆฌ์ ๋จ๊ฒจ ์ค!
var array3 = [2,3,4];
var newArray = array3.map(function(a){
return a * 10
});
console.log(newArray)
// ๊ฒฐ๊ณผ
[20, 30, 40]
โ๏ธ JSX ์์์ HTM์ map ํจ์ ์ ์ฉ
function App (){
return (
<div>
{
[1,2,3].map(function(){
return ( <div>์๋
</div> )
})
}
</div>
)
}
// ๊ฒฐ๊ณผ
<div>์๋
</div>
<div>์๋
</div>
<div>์๋
</div>
- ์ฐ์ [1, 2, 3]์๋ค๊ฐ map์ ๋ถ์์ผ๋ ๊ทธ ์์ ์๋ฃ ๊ฐฏ์๋งํผ map ๋ด๋ถ์ ์๋ return <div>์๋
</div> ์คํ.
- <div>์๋
</div>๋ฅผ array์ 3๋ฒ ๋ด์์ค.( [ <div>์๋
</div>, <div>์๋
</div>, <div>์๋
</div> ] ์ด๋ฐ ํํ )
โ๏ธ ๊ธ์ ๋ชฉ 3๊ฐ ๋ฐ๋ณต๋ฌธ ์ถ์ฝ
function App (){
let [๋ฐ๋ด, ๋ฐ๋ด๋ณ๊ฒฝ] = useState([0,0,0]);
return (
<div>
(์๋ต)
{
๊ธ์ ๋ชฉ.map(function(a, i){
return (
<div className="list"key={i}>
<h4>
{ ๊ธ์ ๋ชฉ[i] }
<span onClick={()=>{
let copy = [...๋ฐ๋ด];
copy[i] = copy[i] + 1;
๋ฐ๋ด๋ณ๊ฒฝ(copy)
}}>๐</span> {๋ฐ๋ด[i]}
</h4>
<p>2์ 18์ผ ๋ฐํ</p>
</div> )
})
}
</div>
)
}
- function(a, i): ์ฒซ์งธ ํ๋ผ๋ฏธํฐ a๋ array ์์ ์๋ ์๋ฃ, ๋์งธ ํ๋ผ๋ฏธํฐ๋ i๋ 0๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ ์ ์
- <div className="list" key={i}>: map ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐ๋ณต์์ฑํ html์ key={i} ์์ฑ์ ์ถ๊ฐํด ๋ฆฌ์กํธ๊ฐ <div>๋ค์ ๊ฐ๊ฐ ๊ตฌ๋ถํ ์ ์๊ฒ ํด์ผํ๋ค. (์์ผ๋ฉด ์๋ ๋์์ค!)
- onClick() ๋ด๋ถ ์ฝ๋:
- state๊ฐ array์๋ฃ์ด๋ฏ๋ก ๋ณต์ฌ ๋จผ์ !
- 0๋ฒ์งธ ์ข์์ ๋ฒํผ์ ํด๋ฆญ์์ ๋ฐ๋ด[0] + 1, 1๋ฒ์งธ ์ข์์ ๋ฒํผ ํด๋ฆญ์์ ๋ฐ๋ณธ[1] + 1, 2๋ฒ์งธ ์ข์์ ๋ฒํผ ํด๋ฆญ์์ ๋ฐ๋ด[2] + 1
๋ณธ ํฌ์คํ ์ << React ๋ฆฌ์กํธ ๊ธฐ์ด๋ถํฐ ์ผํ๋ชฐ ํ๋ก์ ํธ๊น์ง! >> ๊ฐ์๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
'Frontend ๐ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ฉ์ ํ] ์ผํ๋ชฐ ํ๋ก์ ํธ Part1 - React Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ, export default / import ๋ฌธ๋ฒ (0) | 2023.10.16 |
---|---|
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part5 (1) | 2023.10.14 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part4 (0) | 2023.10.14 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part2 (1) | 2023.10.11 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part1 (2) | 2023.10.11 |