๐ State ๋ ๋ฌด์์ธ๊ฐ?
- state๋ ๋ฆฌ์กํธ์์ ์ด๋ฒคํธ์ ์ํด ๋ณ๊ฒฝ๋๋ ๋์ ์ธ ๊ฐ์ ๋๋ค.
- ๋ฒํผ์ ํด๋ฆญํ๋ onClick ์ด๋ฒคํธ, input ์
๋ ฅ์ผ๋ก ์ธํด ๋ฐ์ํ๋ onChange ์ด๋ฒคํธ์ ์ํด ์
๋ ฅ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์ค์ ํ๋ ๊ฐ์ด๋ฉฐ ์ฝ๊ธฐ ์ ์ฉ์ด์ง๋ง, state๋ ํ์ ์ปดํฌ๋ํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ํจ์ํ ์ปดํฌ๋ํธ๋ 'useState'๋ผ๋ Hook ์ ์ฌ์ฉํ์ฌ state๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๐ State ์ฌ์ฉํ๊ธฐ : useState
ํจ์ํ(function) ์ปดํฌ๋ํธ์์ { useState } Hooks๋ฅผ ํ์ฉํด state๋ฅผ ์ฌ์ฉํด๋ณด๊ฒ ์ต๋๋ค.
useState๋ ๋ฆฌ์กํธ์ ๊ธฐ๋ณธ Hook ์ค ํ๋๋ก, ์ปดํฌ๋ํธ์์ state๋ฅผ ์ถ๊ฐํ ๋ ์ฌ์ฉํฉ๋๋ค.
โป ๊ธฐ๋ณธํ : useState, useEffect, useContext
• ๋ฐ๋์ setState ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ
state ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ ๋ฐ๋์ setState๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
setState๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, state๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด useState๊ฐ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ , ์์ ์ปดํฌ๋ํธ๋ค๊น์ง ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์ํฉ๋๋ค.
์ง์ state๋ฅผ ์์ ํ๊ฒ ๋๋ฉด ๋ฆฌ์กํธ๊ฐ render ํจ์๋ฅผ ํธ์ถํ์ง ์์ ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ๋ ๋๋ง์ด ์ผ์ด๋์ง ์์ ์ ์์ต๋๋ค.
โก useState ํํ
const [ state, setState ] = useState(initialState)
const [ ์ํ, ์ธํฐํจ์ ] = useState(์ด๊ธฐ๊ฐ)
useState ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋ฐฐ์ด [state, setState] ์ด ๋ฆฌํด๋ฉ๋๋ค.
๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์๋ ํ์ฌ ์ํ(state)์ด๊ณ , ๋๋ฒ์งธ ์์๋ ์ํ๋ฅผ ๋ฐ๊พธ์ด์ฃผ๋ setState ํจ์๊ฐ ๋ฆฌํด๋ฉ๋๋ค.
useState ํจ์ ์ธ์์๋ ์ํ์ ์ด๊ธฐ๊ฐ์ ๋ฃ์ด์ฃผ๋ ๋ฐ, ์๋ต ๊ฐ๋ฅํฉ๋๋ค :D
โก useState ์ฌ์ฉํ๊ธฐ : input๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ ๋ฉ์์ง
์๋ ์ฝ๋๋ input๊ฐ์ ๋ฐ๋ผ ๋ณํ๋ ๋ฉ์์ง ๋ํ๋ด๊ธฐ
input ์ด๋ฒคํธ๋ก ๋ฐ์ํ ๋ฐ์ดํฐ(e.target.value)๋ฅผ message ๋ณ์์ ๋์ ํ๋ ์ฝ๋์ ๋๋ค.
1) useState๋ก message ๊ด๋ฆฌ : ์ด๊ธฐ๊ฐ ์ค์ , ์ธํฐํจ์(setMessage) ์ ์ธ
const [message, setMessage] = useState('');
2) event ๋ก ๋ฐ์ํ value ๊ฐ์ Message์ ๋์ ํด์ state๋ฅผ ๊ฐฑ์ ํ๊ธฐ
setMessage(e.target.value);
import React, {useState} from "react";
function MyComponent() {
const [message, setMessage] = useState('');
const onChange = (e) => {
setMessage(e.target.value);
}
return(
<div>
<input onChange={onChange}/>
<p>{message}</p>
</div>
);
}
export default MyComponent;
• ์คํ๊ฒฐ๊ณผ
'FE > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๋ฆฌ์กํธ ๋ถํธ์คํธ๋ฉ(react-bootstrap) ์ ์ฉํ๊ธฐ (0) | 2023.02.07 |
---|---|
[React] Props๋? ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ ์ ๋ฌํ๋ ํ๋กํผํฐ (0) | 2023.01.29 |
[React] React ์ปดํฌ๋ํธ๋? React ์ฑ์ ๊ตฌ์ฑํ๋ ์์ (0) | 2023.01.27 |
[React] JSX ์ ์ ๋ฐ ๋ฌธ๋ฒ (0) | 2023.01.24 |
[React] React ๊ฐ๋ (0) | 2023.01.23 |