๐ state
state๋ Component ๋ด๋ถ์์ ๋ฐ๋ ์ ์๋ ๊ฐ์ ์๋ฏธํฉ๋๋ค. props๋ Component๊ฐ ์ฌ์ฉ๋๋ ๊ณผ์ ์์ ๋ถ๋ชจComponent๊ฐ ์ค์ ํ๋ ๊ฐ์ด๋ฉฐ, component ์์ ์ ํด๋น props๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. props๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด ๋ถ๋ชจ Componenet์์ ๋ฐ๊พธ์ด ์ฃผ์ด์ผํฉ๋๋ค.
React์๋ ๋ ๊ฐ์ง state๊ฐ ์์ต๋๋ค.
ํ๋๋ classํ Component๊ฐ ์ง๋๊ณ ์๋ state
์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ํจ์ํ Component๊ฐ ์ง๋๊ณ ์๋ useState
๋ผ๋ ํจ์๋ฅผ ํตํด ์ฌ์ฉํ๋ state์
๋๋ค.
๐ classํ Component์ state
- Component์ state๋ฅผ ์ค์ ํ ๋๋ constructor
๋ฉ์๋๋ฅผ ์์ฑํ์ฌ ์ค์ ํฉ๋๋ค.
consturctor(props){
super(props);
// state์ ์ด๊น๊ฐ ์ค์
this.state = {
number = 0
}
}
constructor๋ฅผ ์์ฑํ ๋๋ ๋ฐ๋์ super(props)๋ฅผ ํธ์ถํด ์ฃผ์ด์ผ ํฉ๋๋ค. ์ด ํจ์๊ฐ ํธ์ถ๋๋ฉด ํ์ฌ classํ Component๊ฐ ์์๋ฐ๊ณ ์๋ react์ Component ํด๋์ค๊ฐ ์ง๋ ์์ฑ์ ํจ์๋ฅผ ํธ์ถํด ์ค๋๋ค.
๊ทธ ๋ค์์๋ this.state ๊ฐ์ ์ด๊น๊ฐ์ ์ค์ ํด ์ฃผ์์ต๋๋ค. Component์ state๋ ๊ฐ์ฒดํ์
์ด์ด์ผ ํฉ๋๋ค.
- render ํจ์์์ ํ์ฌ state๋ฅผ ์กฐํํ ๋๋ this.state๋ฅผ ์กฐํํ๋ฉด ๋ฉ๋๋ค.
render(){
const { number } = this.state; //state ์กฐํ
return(
....
);
}
- setState๋ผ๋ ํจ์๋ฅผ ์ด์ฉํด state ๊ฐ์ ๋ฐ๊ฟ์ค๋๋ค.
render(){
const { number } = this.state; //state ์กฐํ
return(
<div>
<button onClick={() => {
this.setState({ number: number + 1 });
}}
</div>
);
}
๐ ํจ์ํ Component์ useState
- ๋ฐฐ์ด ๋น๊ตฌ์กฐํ ํ ๋น
๋ฐฐ์ด ์์ ๋ค์ด ์๋ ๊ฐ์ ์ฝ๊ฒ ์ถ์ถํ ์ ์๋๋ก ํด์ฃผ๋ ๋ฌธ๋ฒ์ ๋๋ค.
const array = [1, 2];
const arr1 = array[0]; //1
const arr2 = array[1]; //2
์์ ์ฝ๋๋ฅผ ๋ฐฐ์ด ๋น๊ตฌ์กฐํ ํ ๋น์ ์ฌ์ฉํด ์์ฑํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
const array = [1, 2];
const [arr1, arr2] = array;
- useState ์ฌ์ฉํ๊ธฐ
๋จผ์ ์ฝ๋ ์๋จ์ useState ํจ์๋ฅผ ๋ถ๋ฌ์์ผํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด ๋น๊ตฌ์กฐํ ํ ๋น ๋ฌธ๋ฒ์ ์ด์ฉํด state์import { useState } from 'react';
๊ธฐ๋ณธ ๊ฐ
์ ์ง์ ํด ์ค๋๋ค.
useState์ ๊ดํธ ์์ ๊ฐ์ด state์ ๋ด๊ฒจ์๋ ์ํ์ ๋๋ค.const [state, setState] = useState('');
state ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ state๊ฐ ์๋ setState๋ฅผ ์ด์ฉํด ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์๋๋ ๋ฒํผ ํด๋ฆญ ์ state ๋ด์ฉ์ด ๋ฐ๋๋๋ก ์ค์ ํ ์ฝ๋์ ๋๋ค.
import { useState } from 'react';
const ChangeState = () => {
let [text, setText] = useState('');
return(
<div>
<button onClick={() => {
setText('Hello');
}}
</div>
)
}
๋ฒํผ์ ํด๋ฆญํ๊ฒ ๋๋ฉด ์๋ฌด๊ฒ๋ ์ ๋ด๊ฒจ ์๋ state๊ฐ setText ํจ์๋ก ์ธํด 'Hello'๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๐ state ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ
- *state ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ๋๋ setState ํน์ useState๋ฅผ ํตํด ์ ๋ฌ๋ฐ์ ์ธํฐ ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. *
- state์ ๋ด๊ฒจ์๋ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋ ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
import { useState } from 'react';
const ChangeState = () => {
let [text, setText] = useState(['Hi', 'Hello']);
return(
<button onClick={() => {
let copy = [... text];
copy[0] = 'Bye';
setText(copy);
}}
)
}
```
์ ์ฝ๋์ ๊ฐ์ด ๊ฐ์ฒด์ ๋ํ ์ฌ๋ณธ์ ๋ง๋ค ๋๋ spread ์ฐ์ฐ์
๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.