state๋ render ํจ์๊ฐ ์คํ๋๋ ์กฐ๊ฑด
์ผ๋ก component์ state
๋ props์ ๋ค๋ฅด๊ฒ ์ธ๋ถ๋ก ์ ๋ฌ๋์ง ์๊ณ
์์ ๋ง์ ๊ณ ์ ํ state๋ฅผ ๊ฐ๋๋ค.
โ class ์์ state๋ฅผ ์ถ๊ฐํ ๋๋ render()์ ๊ตฌ๋ถํ๊ธฐ ์ํ ,๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค. class๋ ๊ฐ์ฒด๊ฐ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
Class component์ state ์ถ๊ฐํ๊ธฐ
โ super(props); ์ ์ธ์ ์๋ this. syntax๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
State์ ์ ๊ทผํ๊ธฐ
. this.state.name-of-property
state๋ ์์ ์ state๋ฅผ ์ฝ๋ ๊ฒ ๋ฟ๋ง ์๋๋ผ ์ค์ค๋ก state๋ฅผ ๋ณํ์ํฌ ์๋ ์๋ค
. state๋ฅผ ๋ฐ๊ฟ ๋๋ this.setState()
ํจ์๋ฅผ ํธ์ถํด์ผ ํ๋ค. ์ด ํจ์๋ 2๊ฐ์ argument๋ฅผ ์ทจํ๋๋ฐ, ์ฒซ๋ฒ์งธ๋ update๊ฐ ํ์ํ component์ state์ callback(optional)
์ด๋ค. setState()๊ฐ ํธ์ถ๋ ๋ ์๋์ผ๋ก render ํจ์๊ฐ ์คํ๋๋ฉฐ ํด๋น ์์ ์ ์ํ๊ฐ ๋ณํํ์ง ์์ property๋ ๊ธฐ์กด์ ์ํ๋ฅผ ์ ์งํ๊ณ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๋ฐ์
๋๋ค.
โ render ํจ์ ์์ state๊ฐ ์์ผ๋ฉด ํด๋น class๋ ๋ฌดํ loop๊ฐ ๋ ๊ฒ์ด๋ค. ๐
{
mood: 'great',
hungry: false
}
this.setState({ hungry: true });
{
mood: 'great', //mood๋ ๋ณํ์ง ์์
hungry: true
}
Call this.setState from another function
. this.setState()๋ฅผ ํธ์ถํ๋ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ๋ฐฉ๋ฒ์ setState()๊ฐ ์์ฑ๋ ์ฌ์ฉ์ ์ง์ ํจ์๋ฅผ ํธ์ถํ๋ ๊ฒ์ด๋ค.
class Example extends React.Component {
constructor(props) {
super(props);
this.state = { weather: 'sunny' };
this.makeSomeFog = this.makeSomeFog.bind(this);
}
makeSomeFog() { //custom function
this.setState({
weather: 'foggy'
});
}
}
ย ย ย . ์ฌ์ฉ์ ์ง์ ํจ์๋ฅผ ํธ์ถํ ๋ ์ฃผ์ํด์ผ ํ ์
์ด ์๋ค. ๋ฐ๋ก JavaScript๊ฐ eventHandler๋ฅผ bindingํ๋ ๋ฐฉ์์ผ๋ก ์ธํด์ attribute์ ํ ๋น๋ handler์ this๊ฐ ์ ํจํ์ง ์๊ฒ ๋๋ค๋ ์
์ด๋ค.
โ eventHandler๋ฅผ this๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ ๊ฒฝ์ฐ, constructor์ this.methodName = this.methodName.bind(this)๋ฅผ ๊ผญ ์ถ๊ฐ
ํ์ฌ ํด๋น method๊ฐ ํ์ฌ obj๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด๋ผ๊ณ ์๋ ค์ค์ผ ํ๋ค.