๐โ๏ธ ๋ธ๋ก๊ทธ ๊ธ ์ด๊ธฐ ๋ ์ด์์
function App(){
let posts = '๊ฐ๋จ ์ฐ๋ ๋ง์ง';
return (
<div className="App">
<div className="black-nav">
<div>๊ฐ๋ฐ blog</div>
</div>
<div className="list">
<h4>๊ธ์ ๋ชฉ</h4>
<p>2์ 17์ผ ๋ฐํ</p>
</div>
</div>
)
}
(App.css)
div {
box-sizing : border-box
}
.list {
text-align : left;
padding-left : 20px;
border-bottom : 1px solid grey;
}
โ๏ธ state ๋ง๋๋ ๋ฒ
- ๋งจ ์์ค์ import {useState} from 'react'ํ๊ณ ์ํ๋ ๊ณณ์ useState('๋ณด๊ดํ ์๋ฃ') ์ฐ๋ฉด state์ ์๋ฃ๋ฅผ ์ ๊น ์ ์ฅํ ์ ์๋ค.
- ๋์ค์ ์ ์ฅํ ์๋ฃ๋ฅผ ์ฐ๊ณ ์ถ์ผ๋ฉด let[a,b] = useState('๋จ์ ์ฝํธ ์ถ์ฒ');
import { useState } from 'react';
function App(){
let [๊ธ์ ๋ชฉ, b] = useState('๋จ์ ์ฝํธ ์ถ์ฒ');
let posts = '๊ฐ๋จ ์ฐ๋ ๋ง์ง';
return (
<div className="App">
...
<h4>{ ๊ธ์ ๋ชฉ }</h4>
...
</div>
)
}
1) ๋ณ์ ๋ง๊ณ state์ ๋ฐ์ดํฐ ์ ์ฅํด์ ์ฌ์ฉํ๋ ์ด์
- state๋ ๋ณ๋์ฌํญ์ด ์๊ธฐ๋ฉด state์ฐ๋ html๋ ์๋์ผ๋ก ์ฌ๋ ๋๋ง ํด์ค๋ค.
→ ๊ทธ๋์ ๋ฐ๋์ง ์๋ ๋ฐ์ดํฐ๋ค์ state๋ก ๊ตณ์ด ์ ์ฅํ ํ์๊ฐ ์์!
- ์ฌ๋ฌ ๊ฐ์ useState() ์ฌ์ฉํ์ง ์๊ณ array์๋ฃ๋ก ๊ตฌํํ ์๋ ์๋ค.
- ์ด์ : UI ๊ธฐ๋ฅ ๊ฐ๋ฐ๋ ๋งค์ฐ ํธ๋ฆฌ, ์ฌ์ดํธ๊ฐ ์ค๋ฌด์ค๊ฐ ๋์ํจ
โ๏ธ ์ข์์ ๋ฒํผ ๋ง๋ค๊ธฐ
// ์ด๊ธฐ ์ฝ๋
function App(){
// ์ข์์ ๊ฐฏ์ state๋ก ๋ง๋ค๊ธฐ
let [๋ฐ๋ด] = useState(0);
return (
<h4> { ๊ธ์ ๋ชฉ[0] } <span>๐</span> { ๋ฐ๋ด }</h4>
)
}
1) onClick ์ฌ์ฉ๋ฒ
<div onClick={์คํํ ํจ์}>
- Click์ด ๋๋ฌธ์!
- {} ์ค๊ดํธ ์ฌ์ฉ!
- ๊ทธ๋ฅ ์ฝ๋๊ฐ ์๋๋ผ ํจ์๋ฅผ ๋ฃ์ด์ผ ์ ๋์ํจ!
function App(){
function ํจ์์(){
console.log(1)
}
return (
<div onClick={ํจ์์}> ์๋
ํ์ธ์ </div>
)
}
// ๋๋ ํจ์๋ฅผ ๊ทธ ์๋ฆฌ์์ ์ง์ ๋ง๋ฌ
<div onClick={ function(){ ์คํํ ์ฝ๋ } }>
<div onClick={ () => { ์คํํ ์ฝ๋ } }>
2) state ๋ณ๊ฒฝํ๋ ๋ฒ
- state ๋ณ๊ฒฝํจ์ ์ฌ์ฉํด์ state ๋ณ๊ฒฝ
- ์ฌ์ฉ๋ฒ: ๋ฐ๋ด๋ณ๊ฒฝ(์๋ก์ดstate)
→ ์: ๋ฐ๋ด๋ณ๊ฒฝ(1) โน state๊ฐ 1๋ก ๋ณ๊ฒฝ
// ์์ฑ ์ฝ๋
function App(){
// state ๋ณ๊ฒฝํจ์ ์ฌ์ฉํด์ state ๋ณ๊ฒฝ
let [ ๋ฐ๋ด, ๋ฐ๋ด๋ณ๊ฒฝ ] = useState(0);
return (
<h4> { ๊ธ์ ๋ชฉ[0] } <span onClick={ ()=>{ ๋ฐ๋ด๋ณ๊ฒฝ(๋ฐ๋ด + 1) } } >๐</span> { ๋ฐ๋ด }</h4>
)
}
โ๏ธ ๊ธ ์์ ๋ฒํผ ๋ง๋ค๊ธฐ
// ์์ฑ ์ฝ๋
function App(){
let [๊ธ์ ๋ชฉ, ๊ธ์ ๋ชฉ๋ณ๊ฒฝ] = useState( ['๋จ์์ฝํธ ์ถ์ฒ', '๊ฐ๋จ ์ฐ๋๋ง์ง', 'ํ์ด์ฌ ๋
ํ'] );
return (
<button onClick={ ()=>{
let copy = [...๊ธ์ ๋ชฉ];
copy[0] = '์ฌ์์ฝํธ ์ถ์ฒ';
๊ธ์ ๋ชฉ๋ณ๊ฒฝ(copy)
} }> ์์ ๋ฒํผ </button>
)
}
1) state ๋ณ๊ฒฝํจ์ ๋์์๋ฆฌ
- state ๋ณ๊ฒฝํจ์๋ฅผ ์ธ ๋ ๊ธฐ์กด state === ์ ๊ท state ์ด๋ ๊ฒ ๋จผ์ ๊ฒ์ฌ
→ ๊ทธ๋์ ๊ฐ์ผ๋ฉด state ๋ณ๊ฒฝX
2) array/object ๋์์๋ฆฌ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ array/object ์๋ฃ๋ฅผ ํ๋ ๋ง๋ค๋ฉด ์๋ฃ๊ฐ ๋จ์ด๋ผ๋ ๊ฐ์๊ณต๊ฐ์ ๋ชฐ๋ ์ ์ฅ๋๊ณ ๋ณ์์๋ ๊ทธ ์๋ฃ๊ฐ ์ด๋์๋์ง ๊ฐ๋ฆฌํค๋ ํ์ดํ๋ง ๋ด๊ฒจ์๋ค.
- ์๋ฅผ ๋ค์ด์ let arr = [1,2,3] ์ด๋ ๊ฒ ๋ง๋ค๋ฉด [1,2,3] ์๋ฃ๋ ๋จ์ด๋ผ๋ ๊ฐ์๊ณต๊ฐ์ ๋ชฐ๋ ์ ์ฅ์ด ๋๊ณ let arr ๋ณ์์ ๊ทธ ์๋ฃ๊ฐ ์ด๋์๋์ง ๊ฐ๋ฆฌํค๋ ํ์ดํ๋ง ๋ด๊ฒจ์์!
- ๊ทธ๋์ array/object ์๋ฃ๋ฅผ ๋ณต์ฌํ๋ฉด ์๋ก์ด ๋ณ์๊ฐ ์๋ฃ๊ฐ์ ๋ณ๊ฐ๋ก ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ ๋๊ฐ์ ๊ฐ์ ๊ณต์ ํ๋ค.
- ์๋ฅผ ๋ค์ด data1, data2๋ฅผ ์ ์ธํ์ ๋, data1์ ๋ณ๊ฒฝํ๋ฉด data2๋ ์๋์ผ๋ก ๋ณ๊ฒฝ๋จ.
๋ฐ๋ผ์ ์ปดํจํฐ๋ copy์ ๊ธฐ์กด ๊ธ์ ๋ชฉ state๋ ๋๊ฐ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์(ํ์ดํ๊ฐ ๋๊ฐ์์) state ๋ณ๊ฒฝ ์ํด์ค.
//state ๋ณ๊ฒฝ ์๋จ
let copy = ๊ธ์ ๋ชฉ;
copy[0] = '์ฌ์์ฝํธ ์ถ์ฒ';
๊ธ์ ๋ชฉ๋ณ๊ฒฝ(copy)
// ๐ก์ด๋ ๊ฒ ํ๋ฉด ๋จ!
let copy = [...๊ธ์ ๋ชฉ];
copy[0] = '์ฌ์์ฝํธ ์ถ์ฒ';
๊ธ์ ๋ชฉ๋ณ๊ฒฝ(copy)
"..."
spread operator ๋ผ๊ณ ํ๋ ๋ฌธ๋ฒ์ธ๋ฐ array๋ object ์๋ฃํ ์ผ์ชฝ์ ๋ถ์ผ ์ ์์ผ๋ฉฐ "๊ดํธ๋ฅผ ๋ฒ๊ฒจ์ฃผ์ธ์" ๋ผ๋ ๋ป.
→ ์๋ฅผ ๋ค์ด ...[1, 2, 3] ์ด๋ ๊ฒ ์ฐ๋ฉด ๊ทธ ์๋ฆฌ์ 1, 2, 3์ด ๋จ์.
let data1 = [1,2,3];
let data2 = [...data1];
console.log(data1 === data2) //false ๋์ฌ๋ฏ
๊ทธ๋ฅ data1์ ์๋ ์๋ฃ๋ค์ ๊ดํธ ๋ฒ๊ธด ๋ค์ ๋ค์ array๋ก ๋ง๋ค์ด์ฃผ์ธ์! ๋ผ๊ณ ์ฌ์ฉํ๋ฉด ์๋ก์ด array๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ํ์ดํ๊ฐ ๋ฌ๋ผ์ง๋ค. ๊ทธ๋์ ๊ทธ๋ ๊ฒ ํ๋ฉด ํ์ดํ๊ฐ ๋ค๋ฅธ ์์ ๋ ๋ฆฝ์ ์ธ array ๋ณต์ฌ๋ณธ์ ์์ฑํด์ค ์ ์๋ค. (object ์๋ฃํ๋ ๋ง์ฐฌ๊ฐ์ง!)
๋ณธ ํฌ์คํ ์ << 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 ๋ฆฌ์กํธ ๊ธฐ์ด Part3 (0) | 2023.10.14 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part1 (2) | 2023.10.11 |