๐ state : ์ํ
๐ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ฐ์ง๊ณ ์๋ ์ปดํฌ๋ํธ์ ์ํ ๊ฐ
๐ ํ๋ฉด์ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ์ UI์ ๋ณด๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด
๐ ์ปดํฌ๋ํธ ๋ด์์ ์ ์ํ๊ณ ์ฌ์ฉํ๋ฉด ์ผ๋ง๋ ์ง ๋ฐ์ดํฐ(๊ฐ์ฒด)๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค.
๐ classํ ์ปดํฌ๋ํธ์์ state, ํด๋น ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๋์ง ์ฝ๋ ์ ๋ฆฌ ๐
import React from 'react';
class State extends React.Component {
constructor() {
super();
this.state = {
color: 'red'
};
}
render() {
return (
<div>
<h1>Class Component | State</h1>
</div>
);
}
}
export default State;
โ๏ธ classํ ์ปดํฌ๋ํธ ์์๋ ํ์์ ์ผ๋ก renderํจ์๊ฐ ํ์ํ๊ณ ํ๋ฉด์ ๋ํ๋ด๊ณ ์ถ์ jsx์์๊ฐ return๋ฌธ ์์ ๋ค์ด๊ฐ์๋ค.
โ๏ธ render
ํจ์ ์์ constructorํจ์๋ฅผ ๋ณด์
โ๏ธ state๋ฅผ ์ค์ ํ ๋๋ ํ๋ฉด์ ๋ณด์ด๋ฏ์ด constructorํจ์๋ฅผ ์์ฑํ์ฌ ์ค์ ํ๋ค.
โ๏ธ constructor ํจ์๋ ์ปดํฌ๋ํธ ์ ์ธ๋ฌธ๊ณผ renderํจ์ ์ฌ์ด์ ์์ฑํ๋ค.
โ๏ธ constructor ๋ฉ์๋ ์์๋ super()๋ฅผ ํธ์ถํ๋ค.
โ๏ธ this.state๊ฐ์ ์ปดํฌ๋ํธ์ ์ด๊ธฐ ์ํ๊ฐ์ ์ค์ ํด์ค๋ค.
this.state = {
color: 'red'
};
๐ component๋ state ๊ฐ์ฒด์ด๋ค.
๐ ๊ฐ์ฒด ์์ key์ด๋ฆ์ ์ํ๋๋๋ก ์ค์ ํ ์ ์๋ค.
๐ key์ด๋ฆ์ ์ ์ ๋ณด๋ฅผ ๋ด์์ color๋ก ์ง์ ํ๋ค.
๐ color์ key๊ฐ์ผ๋ก red๋ฅผ value๋ก ์ง์ ํ๋ค.
๐ return
๋ฌธ ์์ <h1>
ํ์ดํ ์์๊ฐ ์์ต๋๋ค.
๐ ํด๋น ์์์ ๊ธ์ ์์ ์ปดํฌ๋ํธ์์ ์ค์ ํ state ๊ฐ์ผ๋ก ํ๊ณ ์ถ์ ๊ฒฝ์ฐ,
๐ ๋ค์์ ์์๋๋ก state ๊ฐ์ ํน์ ์์์์ ๋ฐ์ํ ์ ์์ต๋๋ค.
๐ ์ฐ์ JSX ์์์ ์ธ๋ผ์ธ ์คํ์ผ์ ์ ์ฉํ๊ธฐ ์ํด, ๊ทธ ์ค์์๋ ๊ธ์์์ ์ค์ ํด์ฃผ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
```jsx
<h1 style={{ color: }}>Class Component | State</h1>
```
๐ dot notation์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด(state)์ ํน์ key(color) ๊ฐ์ ์ ๊ทผํ์ฌ ๊ทธ ๊ฐ์ color ์์ฑ์ value๋ก ์ง์ ํด์ฃผ์์ต๋๋ค.
```jsx
<h1 style={{ color: this.state.color }}>Class Component | State</h1>
// this : ํด๋น ์ปดํฌ๋ํธ
// this.state : ํด๋น ์ปดํฌ๋ํธ์ state ๊ฐ์ฒด
// this.state.color : state ๊ฐ์ฒด์ ํน์ key(color)๊ฐ. ์ฆ "red"
```
import React, { Component } from 'react';
class State extends Component {
constructor() {
super();
this.state = {
color: 'red',
};
}
handleColor = () => {
this.setState({
color: 'blue'
})
}
render() {
return (
<div>
<h1 style={{ color: this.state.color }}>Class Component | State</h1>
<button onClick={this.handleColor}>Click</button>
</div>
);
}
}
export default State;
โ๏ธ <h1>
ํ๊ทธ ์๋์ <button>
์์๋ฅผ ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
โ๏ธ ๋ค์์ ์์์ ๋ฐ๋ผ์ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.
๐ <button>
์์์์ onClick
์ด๋ฒคํธ ๋ฐ์
๐ this.handleColor
, ์ฆ ํ์ฌ ์ปดํฌ๋ํธ(State
)์ handleColor
ํจ์ ์คํ
๐ handleColor
ํจ์ ์คํ ์ setState
ํจ์ ์คํ - state์ color
๊ฐ์ 'blue'
๋ก ๋ณ๊ฒฝ
๐ render
ํจ์ ํธ์ถ
๐ ๋ฐ๋ state ๊ฐ์ ๋ฐ์ํ์ฌ <h1>
ํ๊ทธ ๊ธ์ ์์ ๋ณ๊ฒฝ