function component
//function component
function App() {
return ( ) ;
}
return ํ ๊ฐ์ screen ์ ํ์
class component
React class component ์์ ๊ฐ์ ธ์จ APP component
//App์ react component
class App extends React.Component{
render(
return ()
) ;
}
React component์์ ํ์ฅํ ๊ฒ๋ค์ screen์ ํ์
react๊ฐ render() ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์คํ
class component๋ฅผ ์ฌ์ฉํ๋ ์ด์ต
state : object ,data๋ฅผ ๋ฃ์ ๊ณต๊ฐ์ด ์์
data๋ ํญ์ ๋ณํ๊ธฐ ๋๋ฌธ์ state์ ๊ฐ์ ๊ณต๊ฐ ์ด ํ์
state(์ํ)๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค React ๊ฐ render๋ฅผ ๋ค์ ํด์ผ ํจ
setState
state๊ฐ ๋ณ๊ฒฝ๋๋ฉด
state refresh -> render function ์คํ
state ์ ํจ๊ผ render function ์ ๊ณ์ ์ฌํธ์ถํจ
render() ๋ฉ์๋
React componet๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋
react๋ render๋ฉ์๋๋ฅผ ๋ฐ๋ก ์คํ์ํด
<์์์ฝ๋ >
class App extends React.Component{
state = {
count:0
};
add = ()=>{
this.setState({count: this.state.count+1 });
};
minus = ()=>{
this.setState({count:this.state.count- 1 })
};
render(){
return (
<div>
<h1> The number is: {this.state.count} </h1>
<button onClick = {this.add}> Add</button>
<button onClick={this.minus}>minus</button>
</div>
);
}
}
state ๋ณ๊ฒฝ์ ๋ฐ๋ผ render ํ๋ ๋์ ๊ฐ๋ฅ
ํ์ง๋ง ์ด๊ฑด ์ข์ง ์์ ์ฝ๋ -> state์ ์์กดํ๊ธฐ ๋๋ฌธ (this.state.count)
โญ๏ธcurrent ํจ์๋ฅผ ์ฌ์ฉ
add = ()=>{
this.setState(current =>({count: current.count+1 }));
};
minus = ()=>{
this.setState(current=>({count: current.count- 1 }))
};
setSatate ํธ์ถ -> state ๊ฐ ๊ฐฑ์ -> render function ์คํ
render ์ธ ํธ์ถ๋๋ ํจ์ (์ค์ํ์ง ์์๊ฒ๋ค ์ฒ๋ฆฌ)
Mounting()
component ํ์
- constructor()
- getDerivedStateFromProps()
- render()
- componentDidMount()
component๊ฐ mount -> screen ํ์ -> constructor -> render -> componentDidMount()
Updating()
componentr๊ฐ ๊ฐ๋ฐ์์ ์ํด state๊ฐ ๋ณ๊ฒฝ
- getDerivedStateFromProps()
- shouldComponentUpdate()
- render()
- getSnapshotBeforeUpdate()
- componentdidUpdate()
Unmounting()
component์์ ๊ธฐ ( ํ์ด์ง ๋ณ๊ฒฝ ์)
- componentWillUnmount()
componentDidMount(){
console.log("component rendered")
}
componentDidUpdate(){
console.log("I justupdate");
}
componentWillUnmount(){
console.log("goodbye");
}
render(){
console.log("i am rendering");
return (
<div>
<h1> The number is: {this.state.count} </h1>
<button onClick = {this.add}> Add</button>
<button onClick={this.minus}>minus</button>
</div>
);
}
์ด๋ ๊ฒ ํธ์ถ๋์์ ๋
i am rendering -> component rendered -> (๋ฒํผ ํด๋ฆญ = state ๋ณ๊ฒฝ) -> i am renderging -> I justupdate
componentDidMount() -> componentDidUpdate()
์์ผ๋ก ๋์
React์ LifeCycle ๋ฉ์๋
React์ life cycle ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํน์ ์์ ์ ์ฝ๋๊ฐ ์คํ๋๋๋ก ์ค์ ํ ์ ์์
โ componentDidMount()
์ฒ์ render ์ ๊ฐ์ฅ ๋จผ์ ํธ์ถ๋๋ life cycle ๋ฉ์๋
class App extends React.Component{
state={
isLoading: true,
movies:[]
};
componentDidMount(){
setTimeout(() => {
this.setState({isLoading:false})
}, 6000);
}
render(){
const {isLoading} = this.state;
return (
<div>
{isLoading? "Loading...":"We are ready"}
</div>
);
}
์ฝ๋์ ๋ฐ๋ผ render ์
Mount() ์งํ ( constructor() -> render() -> componentDidMount() )
๋์์ค๋ช
: isLoading์ ํ์ฌ true์ด๊ณ -> 6์ดํ isLodaing์ ๊ฐ์ flase ์ง์ -> state๊ฐ refresh ๋๋ฉด์ ์ฌ render
ko.reactjs.org/docs/react-component.html
'๐ React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] ๋ฆฌ์กํธ์ Hooks ์์ ๋ก ์ ๋ณตํ๊ธฐ (0) | 2021.03.18 |
---|---|
[React ] React Router๋ฅผ ์ด์ฉํ์ฌ component๊ฐ์ props ๋๊ฒจ์ฃผ๊ธฐ ( (Link & props) (0) | 2021.03.18 |
[React] ํ๋ก์ ํธ GitHub Pages ๋ฐฐํฌํ๊ธฐ + Axios ๋ฅผํตํด json data ๊ฐ์ ธ์ค๊ธฐ (2) | 2021.03.17 |
[ React ] JSX ์ดํดํ๊ธฐ & Proptypes (0) | 2021.03.16 |
React ๋ฆฌ์กํธ๋, ๋ฆฌ์กํธ ์์ ํ๊ฒฝ ์ค์ (0) | 2021.03.16 |
๋๊ธ