[ํญํด99] WIL
State
๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ๋ State ์ฌ์ฉ, props ์ฒ๋ผ App ์ปดํฌ๋ํธ์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์ํฅ์ ์ฃผ๋ ๋ฐ์ดํฐ
State ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ๋ constructor ํจ์๋ฅผ ์ ์ด์ค๋ค. ์ปดํฌ๋ํธ ์์ฑ์์์ super๋ฅผ ํธ์ถํ๊ธฐ ์ ์๋ this๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ !
class App extends Component {
constructor(props) {
super(props);
this.state={
Subject:{title:'WEB',sub:'hello World!'}
}
}
render() {
return (
<div className="App">
<Subject
title={this.state.subject.title}
sub={this.state.subject.sub}>
</Subject>
</div>
);
}
}
์ฆ, ์ปดํฌ๋ํธ์ ์์ ๋ถ๋ถ์ constructor()์ด๋ผ๋ ํจ์๊ฐ ์ปดํฌ๋ํธ์ ์ด๊ธฐํ๋ฅผ ์์ผ์ค์ผ State์ ๊ฐ์ ๋ฃ์ด ์ฌ์ฉํ ์ ์๋ค.
setState
setState()๋ ์ปดํฌ๋ํธ์ state ๊ฐ์ฒด์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์คํํ๋ค. state๊ฐ ๋ณ๊ฒฝ๋๋ฉด, ์ปดํฌ๋ํธ๋ ๋ฆฌ๋ ๋๋ง์ด ๋๋ค.
Props
props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์ ๊ฐ์ ์ ๋ฌ ํ ๋ ์ฌ์ฉํ๋ค.
*์์
import React, { Component } from 'react';
class MyName extends Component {
static defaultProps = {
name: '์ด๋ฆ'
}
render() {
return (
<div>
์ด๋ฆ์ <b>{this.props.name}</b> ์
๋๋ค.
</div>
)
}
}
export default MyName;
import React, { Component } from 'react';
import MyName from './MyName';
class App extends Component {
render() {
return <MyName name ="์ฐ์ข
ํ" />;
}
}
export default App;
* state์ props์ ์ฐจ์ด์ ?
props (“properties”์ ์ค์๋ง) ์ state ๋ ์ผ๋ฐ JavaScript ๊ฐ์ฒด์ ๋๋ค. ๋ ๊ฐ์ฒด ๋ชจ๋ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฌผ์ ์ํฅ์ ์ฃผ๋ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋๋ฐ, ํ ๊ฐ์ง ์ค์ํ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. props๋ (ํจ์ ๋งค๊ฐ๋ณ์์ฒ๋ผ) ์ปดํฌ๋ํธ์ ์ ๋ฌ๋๋ ๋ฐ๋ฉด state๋ (ํจ์ ๋ด์ ์ ์ธ๋ ๋ณ์์ฒ๋ผ) ์ปดํฌ๋ํธ ์์์ ๊ด๋ฆฌ๋ฉ๋๋ค.
๋ฆฌ๋ ๋๋ง ๋ฐ์ ์กฐ๊ฑด
- state ๋ณ๊ฒฝ์ด ์์ ๋,
- ์ ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด state๋ผ๋ ๊ฒ์ ์ด์ฉํ๋ค. ์ด๋ state ๊ฐ์ ๋ฐ๊ฟ์ฃผ๊ธฐ ์ํด์๋ setState ๋ฉ์๋๋ฅผ ์ด์ฉํด์ผ ํ๋ค. ์ด์ ๋ ๋ฆฌ์กํธ๊ฐ state ๋ณ๊ฒฝ์ด ๊ฐ์ง๋๋ฉด ๋ฆฌ๋ ๋๋ง์ ํด์ฃผ๋๋ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ ๋ฐ๊ฟ์ฃผ๋ฉด ๊ฐ์ง๋ฅผ ๋ชปํ๋ค.
- ์๋ก์ด props๊ฐ ๋ค์ด ์ฌ๋,
- ์ ๋ฌ๋ฐ์ props ๊ฐ์ด ์ ๋ฐ์ดํธ ๋ฌ๋ค๋ฉด ๋ฆฌ ๋ ๋๋ง์ด ๋๋ค.
- ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋
- ์๋ก์ด props๊ฐ ๋ค์ด์ค์ง ์๋๋ผ๋ ๋ถ๋ชจ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง์ด ๋๋ค๋ฉด ์์์ปดํฌ๋ํธ ์ญ์ ๋ฆฌ๋ ๋๋ง์ด ๋๋ค.
- shouldComponentUpdate์์ true๊ฐ ๋ฐํ ๋ ๋
- forUpdate๊ฐ ์คํ ๋ ๋