๋ฐ์ํ
๐ท State
'์ํ'๋ผ๋ ๋ป.
์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ฐ์ง๊ณ ์๋ ์ปดํฌ๋ํธ์ ์ํ ๊ฐ.
ํ๋ฉด์ ๋ณด์ฌ์ค ์ปดํฌ๋ํธ์ UI ์ ๋ณด(์ํ)๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด.
- State๋ ์ปดํฌ๋ํธ ๋ด์์ ์ ์ํ๊ณ ์ฌ์ฉํ๋ฉฐ ์ผ๋ง๋ ์ง ๋ฐ์ดํฐ(๊ฐ์ฒด)๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค.
- State๋ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ๋ ๋ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ๊ฒ ๋๊ณ ์ฐ๋ฆฌ๋ ์ด State๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๋ณํ์์ผ์ค ์ ์๋ค.
- ๊ฐ์ฒด์ ํํ๋ฅผ ๊ฐ๊ณ ์๋ค.
- State๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ setState ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
- class ์ปดํฌ๋ํธ์์ State๋ฅผ ์ธ๋๋ ์ปดํฌ๋ํธ์ ํํ๊ฐ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ this.state๋ก ์ฌ์ฉํ ์ ์๋ค.
์ฝ๋๋ก ์์ฑํด๋ณด๋ฉด ๋์ฑ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค!.. ๊ณ ํ๋ค.
๐ท State ๊ฐ์ฒด
ํด๋์คํ ์ปดํฌ๋ํธ์์ State, ์ฆ ํด๋น ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๋์ง ์ดํด ๋ณด์!
๐๐ป Class component | 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๋ฌธ ์์ ๋ค์ด์๋ค.
- State๋ฅผ ์ค์ ํ ๋๋ constructor ํจ์๋ฅผ ์์ฑํ์ฌ ์ค์ ํ๋ค.
- constructor ํจ์๋ ์ปดํฌ๋ํธ ์ ์ธ๋ฌธ(class State extends Component)๊ณผ render ํจ์ ์ฌ์ด์ ์์ฑํ๋ค.
- constructor ๋ฉ์๋ ์์๋ super()๋ฅผ ํธ์ถํ๋ค.
- ๊ทธ ๋ค์์๋ this.state ๊ฐ์ ์ปดํฌ๋ํธ์ ์ด๊ธฐ ์ํ ๊ฐ์ ์ค์ ํด ์ค๋ค.
๐๐ป state ๊ฐ์ฒด
this.state = {
color: 'red'
};
- ์ปดํฌ๋ํธ์ State๋ ์ด๋ ๊ฒ ๊ฐ์ฒด ํํ๋ก ์ ์ํ๋ค.
- ๊ฐ์ฒด ์์ key ์ด๋ฆ์ ์ํ๋ ๋๋ก ์ค์ ํ ์ ์๋ค.
๐ท State ์ฌ์ฉ ์์
State์์ ์ํ ๊ฐ์ ์ค์ ํ๋ ์ด์ ๋ ๊ฒฐ๊ตญ ์ปดํฌ๋ํธ ์์ ์์์ ๊ทธ ์ํ๊ฐ์ ๋ฐ์ํด์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ ๋๋ง๋ค ํจ์จ์ ์ผ๋ก ํ๋ฉด(UI)์ ๋ํ๋ด๊ธฐ ์ํจ์ด๋ค.
<h1 style={{ color: }}>Class Component | State</h1>
<h1 style={{ color: this.state.color }}>Class Component | State</h1>
// this : ํด๋น ์ปดํฌ๋ํธ
// this.state : ํด๋น ์ปดํฌ๋ํธ์ state ๊ฐ์ฒด
// this.state.color : state ๊ฐ์ฒด์ ํน์ key(color)๊ฐ. ์ฆ "red"
๐ท Event & setState
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;
๐๐ป ๋ค์์ ์์์ ๋ฐ๋ผ์ ์ฝ๋๊ฐ ์คํ๋๋ค.
- <button> ์์์์ onClick ์ด๋ฒคํธ ๋ฐ์
- this.handleColor, ์ฆ ํ์ฌ ์ปดํฌ๋ํธ(State)์ handleColor ํจ์ ์คํ
- handleColor ํจ์ ์คํ ์ setState ํจ์ ์คํ - State์ color ๊ฐ์ 'blue' ๋ก ๋ณ๊ฒฝ
- render ํจ์ ํธ์ถ
- ๋ฐ๋ State ๊ฐ์ ๋ฐ์ํ์ฌ <h1> ํ๊ทธ ๊ธ์ ์์ ๋ณ๊ฒฝ
๋ฐ์ํ
'JavaScript > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] 10๊ฐ์ง Hooks (0) | 2021.11.24 |
---|---|
[React] React๋? (0) | 2021.11.18 |
[React] Props & Event (0) | 2021.11.18 |
[React] map ํจ์ ์ ์ฉ์ key props๋ฅผ ๋ถ์ฌํ๋ ์ด์ (0) | 2021.11.18 |
HTML, CSS ์ฝ๋๋ฅผ React๋ก ๋ณํํ ๋ ์ฃผ์ํ ์ (0) | 2021.11.17 |
๋๊ธ