WIL
React_State, Props
minnjeong
2023. 4. 23. 23:39
React
State
๐ State๋?
- ์ปดํฌ๋ํธ ๋ด์์ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ๊ฐ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๊ฐ๋ฐ์๊ฐ ์๋ํ ๋์์ ์ํด ๋ณํ ์๋ ์๊ณ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฐ๋ผ ์๋ก์ด ๊ฐ์ผ๋ก ๋ณ๊ฒฝ๋ ์๋ ์๋ค.
- State ๊ฐ์ด ๋ณ๊ฒฝ๋๊ณ ์ฌ ๋ ๋๋ง์ด ํ์ํ ๊ฒฝ์ฐ์ React๊ฐ ์๋์ผ๋ก ๊ณ์ฐํ์ฌ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ๋ ๋๋งํ๋ค.
๐ State๋ฅผ ๋ณ๊ฒฝํ๊ธฐ
State ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ๋ฐ๋์ setState ํจ์๋ฅผ ์ด์ฉํ๋ค.
setState ํจ์๋ฅผ ํธ์ถํ ๋ ๋ค์ ๋ ๋๋ง ํด๋ฌ๋ผ๋ ๋ช ๋ น์ ๋ด๋ฆฐ๋ค.
const App = () => {
const [value, setValue] = useState(์ด๊ธฐ๊ฐ);
return ~
}
๐ State๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
// 1. setState ๋ด์ ๋ณ๊ฒฝํ ๊ฐ์ ๋ฃ๋๋ค.
const [count, setCount] = useState(0);
setCount(count + 1);
// 2. setState์ ํจ์๋ฅผ ๋ฃ๋๋ค.
const [count, setCount] = useState(0);
setCount((current) => {
return current + 1
})
ํจ์๋ฅผ ๋ฃ๋ ๊ฒฝ์ฐ ํจ์๊ฐ ๋ฐํํ๋ ๊ฐ์ผ๋ก State๊ฐ ๋ณ๊ฒฝ๋๋ค.
ํ์ฌ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก State๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ ํจ์๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ(๋๋ฒ์งธ) ๋ฐฉ๋ฒ์ ๊ถ์ฅํ๋ค.
๐ Props๋?
- ํ๋กํผํฐ(properties)์ ์ค์๋ง์ด๋ค.
- ์์ ์ปดํฌ๋ํธ๊ฐ ํ์ ์ปดํฌ๋ํธ์ ๊ฐ์ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ค.
- ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ๋๋ค.
- ํ๋กํผํฐ๋ ์์ ํ ์ ์๋ค๋ ํน์ง์ด ์๋ค.(์์ ์ ์ฅ์์ ์ฝ๊ธฐ ์ ์ฉ์ธ ๋ฐ์ดํฐ์ด๋ค)
๐ Props ์ฌ์ฉ
- App.js์ name์ด๋ผ๋ props๋ฅผ "minjeong" ์ด๋ผ๋ ๊ฐ์ผ๋ก ๋๊ฒจ์ค๋ค.
- GetName.js์์ name์ props.name์ผ๋ก ์ฌ์ฉํด์ ํ๋ฉด์ "hi, minjeong"์ด ์ถ๋ ฅ๋๋ค.
App.js
import React from 'react';
import GetName from "../src/features/counter/GetName.js"
function App() {
return (
<div className="App">
<Reset />
<GetName name="minjeong" />
</div>
);
}
export default App;
GetName.js
import React from 'react'
function GetName(props) {
return <h1>hi, {props.name}</h1>;
}
export default GetName;
๋๋ ๊ฐ์ฒด์์ ๊ฐ์ ์ถ์ถํ๋, ๋น๊ตฌ์กฐํ ํ ๋น์ผ๋ก ๊ฐ๊ฒฐํ๊ฒ ์์ฑ ๊ฐ๋ฅํ๋ค.
import React from 'react'
function GetName({props}) {
// props.name์ ๋น๊ตฌ์กฐํ ํ ๋น์ผ๋ก name์ผ๋ก ์ค์์!
return <h1>hi, {name}</h1>;
}
export default GetName;