μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- μΉνΌλΈλ¦¬μ±
- μ 리νΈλ¦¬νΈ
- λ°μν
- κΉλ―Έκ²½μλ§νμμ
- λκ°
- λ μ
- μλ°μ€ν¬λ¦½νΈ
- μλ°
- html
- μν
- κ°λ°
- Kλ°°ν°λ¦¬λ 볼루μ
- λ°°μμ λ°°μ
- css
- μ±
- μ€λΌν΄
- λ°μ΄ν°λ² μ΄μ€
- νλ‘κ·Έλλ°
- database
- Python
- μνμ£Ό
- Java
- μ€λΈμ
- μΉ΄νλκ°
- κ°μ΄ν μ’ λκ°λΉ
- JavaScript
- νμ²μ 리νΈλ¦¬νΈ
- νμ΄μ¬
- μ½λ©
- ν°μ€ν 리μ±λ¦°μ§
- Today
- Total
JiYoung Dev π₯
[React] Lifecycle (2023.05.24) λ³Έλ¬Έ
LifeCycle
νμ¬ reactλ node.js μλ² μμμ λμκ°κ³ μμ. node.jsλ μ±κΈμ€λ λλ‘ μμ μ μ§ννλ νλ‘μΈμ€κ° νλ λ°μ μμ. κ·Έλ κΈ° λλ¬Έμ μμμ μλλ‘ μ½λκ° μμ±λ μμλλ‘ μ§νλλ javaμλ λ¬λ¦¬ μ½λ μ€κ°μ 쑰건문과 κ°μ λ¬΄κ±°μ΄ μμ μ΄ μμΌλ©΄ μμμ μλλ‘ μ½λ μμ± μμλλ‘ μμ μ μ§ννμ§ μκ³ , κ°λ²Όμ΄ μμ λΆν° μ§ν ν λ¬΄κ±°μ΄ μμ μ μ§νμν΄.
λ°λΌμ Reactμμλ μμμ μλλ‘ μμλλ‘ μ½λλ₯Ό μμ±νλ€κ³ ν΄μ μνλ λλ‘ μμ μ΄ μ€νλμ§ μμ. Reactsms μ»΄ν¬λνΈκ° μ€νλκ±°λ, μ λ°μ΄νΈ λκ±°λ, μμ λ λ νΉμ μ΄λ²€νΈκ° λ°μν¨. μ΄λ¬ν Reactμ νΉμ±μ μλͺ μ£ΌκΈ°(LifeCycle)μ΄λΌκ³ νλ©°, Reactλ₯Ό ν΅ν΄ μ°λ¦¬κ° μνλ λλ‘ μΉνμ΄μ§κ° μλνκ² λ§λ€κΈ° μν΄μλ lifecycleμ μ΄ν΄νκ³ μ΄λ₯Ό λ°νμΌλ‘ κ°λ°μ μ§ννλ κ²μ΄ νμν¨
π React LifeCycle λΆλ₯
μ»΄ν¬λνΈ μμ±-λ³ν-μ κ±°κΉμ§ μ£ΌκΈ°λ₯Ό μ‘μ μ μμ
>> μ΄λ₯Ό ν λλ‘ λ΄κ° μνλ μμ μ μ½λκ° λ€μ΄κ° μ μλλ‘ ν μ μμ
Reactλ μ»΄ν¬λνΈ κΈ°λ°μ Viewλ₯Ό μ€μ¬μΌλ‘ ν λΌμ΄λΈλ¬λ¦¬. Viewλ₯Ό μ€μ¬μΌλ‘ νκΈ° λλ¬Έμ λ³΄ν΅ νμ΄μ§κ° Rendering λκΈ° μ μΈ μ€λΉ κ³Όμ μμ μμνμ¬ νμ΄μ§μμ μ¬λΌμ§ λ λμ΄ λ¨
π Mount(λ§μ΄νΈ)
μ»΄ν¬λνΈκ° μμ±λ λ λ°μνλ μλͺ μ£ΌκΈ°
βοΈ constructor
- μ»΄ν¬λνΈ μμ±μ λ©μλ, μ»΄ν¬λνΈκ° μμ±λλ©΄ κ°μ₯ λ¨Όμ μ€νλλ λ©μλ. μ΄ λ©μλμμλ μ΄κΈ° state κ°μ μ μν μ μμ (useState)
- νλ©΄μ΄ λ λλ§ λκΈ° μ μ΅μ΄μ μκ°
βοΈ render
- μ»΄ν¬λνΈλ₯Ό λ λλ§ν λ νμν λ©μλλ‘ μ μΌν νμ λ©μλ
- constructor λ©μλ μ€ν λ μ΄ν μ€ν
- JSXκ° HTMLλ‘ λ³νλμ΄ μΉλΈλΌμ°μ μ λνλ¨
- νλ©΄μ΄ λ λλ§ λλ μ€
- render λ©μλλ μ»΄ν¬λνΈκ° λ‘λ©λ λμμ μ€νλμ§λ§ μ»΄ν¬λνΈμ λ°μ΄ν°(state, props)κ° μ λ°μ΄νΈ λμμ λμλ λμν¨. λ°λΌμ render λ©μλμμ setStateλ propsλ₯Ό λ³νμν€λ λ©μλλ₯Ό κ°λ₯νλ©΄ μννμ§ μλ κ²μ μΆμ²
βοΈ componentDidMount
- μ»΄ν¬λνΈμ 첫λ²μ§Έ λ λλ§μ΄ λ§μΉκ³ λλ©΄ νΈμΆλλ λ©μλ. μ΄ λ©μλκ° νΈμΆλλ μμ μλ μ°λ¦¬κ° λ§λ μ»΄ν¬λνΈκ° νλ©΄μ λνλ μν
- νλ©΄ λ λλ§ λ μ§ν
- λ°μ΄ν°λ₯Ό κ°μ§κ³ μ€λμΌμ ν¨ (API κ°μ Έμ€κΈ° λ±)
νλ‘ νΈμλμ λ°±μλκ° ν¨κ» μ£Όκ³ λ°λ μ 보λ€μ APIλΌκ³ ν¨
ex. λ‘κ·ΈμΈ μ 보
π Update(μ λ°μ΄νΈ)
μ»΄ν¬λνΈκ° μ λ°μ΄νΈ λλ μμ μ μλͺ μ£ΌκΈ°
stateλ propsμ λ³κ²½ μ λ¬΄λ‘ μ λ°μ΄νΈλ₯Ό νλ¨
βοΈ componentDidUpdate
μ»΄ν¬λνΈμ λ³κ²½μ΄ μλ£λμμ λ μνλλ λ©μλ
render λ©μλκ° μ€νλμ΄ μ λ°μ΄νΈ λ state, propsμ μ λ°μ΄νΈ λκΈ° μ μΈ state, propsλ₯Ό κ°μ§κ³ λΉκ΅ μμ
π UnMount(μΈλ§μ΄νΈ)
μ»΄ν¬λνΈκ° νλ©΄μΈμ΄ μ¬λΌμ§ λ μλͺ μ£ΌκΈ°
βοΈ componentWillUnmount
μ»΄ν¬λνΈκ° μ¬λΌμ§ λ μνλλ λ©μλ
π ν¨μν μ»΄ν¬λνΈμμμ λΌμ΄νμ¬μ΄ν΄
κΈ°μ‘΄ Reactλ ν΄λμ€ μ»΄ν¬λνΈλ‘ μ¬μ©λμμ.
(ν¨μν μ»΄ν¬λνΈμμλ state κ΄λ¦¬μ λΌμ΄νμ¬μ΄ν΄μ μ¬μ©ν μ μμμ)
κ·Έλ¬λ μ μ ν¨μν μ»΄ν¬λνΈλ₯Ό λ§μ΄ μ¬μ©νκ² λ¨
ν¨μν μ»΄ν¬λνΈλ₯Ό λ§μ΄ μ¬μ©νκ² λ κ³κΈ° μ€ νλ : react Hook
/** rcc : class component μμ±νλ λ¨μΆν€ *
* React Hookμ΄λΌλ κΈ°λ₯λ€μ΄ μ겨λλ©΄μ
* κΈ°μ‘΄ Function μ»΄ν¬λνΈμμ μ€νλμ§ μμλ 리μ‘νΈμ μ€μ μμλ€μ
* Function μ»΄ν¬λνΈμμ μ¬μ©ν μ μκ² λμμ
* * ex) κ³Όκ±°μλ LifeCycle κ°μ μ€μν κ°λ μ Function Componentμμ μ¬μ©ν μ μμμ
* react Hookμ΄ μ겨λκ² λλ©΄μ μ΄μ λ Function componentμμλ LifeCycleμ μ¬μ©ν μ μκ² λμμ
* * react Hook : use~ μμνλ κ²λ€
* ex. useState, useRef, useContext ... etc (κΈ°μ‘΄μλ μ¬μ©λͺ»νλ κ²λ€) * */
π ν΄λμ€ μ»΄ν¬λνΈλ‘ λΌμ΄νμ¬μ΄ν΄ νμΈνκΈ°
import React, { Component } from "react";
/** rcc : class component μμ±νλ λ¨μΆν€
*
* React Hookμ΄λΌλ κΈ°λ₯λ€μ΄ μ겨λλ©΄μ
* κΈ°μ‘΄ Function μ»΄ν¬λνΈμμ μ€νλμ§ μμλ 리μ‘νΈμ μ€μ μμλ€μ
* Function μ»΄ν¬λνΈμμ μ¬μ©ν μ μκ² λμμ
*
* ex) κ³Όκ±°μλ LifeCycle κ°μ μ€μν κ°λ
μ Function Componentμμ μ¬μ©ν μ μμμ
* react Hookμ΄ μ겨λκ² λλ©΄μ μ΄μ λ Function componentμμλ LifeCycleμ μ¬μ©ν μ μκ² λμμ
*
* react Hook : use~ μμνλ κ²λ€
* ex. useState, useRef, useContext ... etc (κΈ°μ‘΄μλ μ¬μ©λͺ»νλ κ²λ€)
*
*/
export default class Ex01 extends Component {
// stateλ νλ©΄μ λ§λ€κΈ° μ΄μ μ λ§λ€μ΄μ ΈμΌ ν¨ >> κ·ΈλμΌ νλ©΄μ λμ΄μ€ μ μμ
// state κ΄λ¦¬λ₯Ό 1λ²μΌλ‘ (constructor)
componentDidMount() {
/**componentDidMount : νλ©΄μ΄ λ§μ΄νΈλ¨(λ λλ§μ΄ λλ¬μ)
* >> API call(ajax, fetch, axios...) λ± λ°μ΄ν°λ₯Ό λ°μμ€λ λ¬΄κ±°μ΄ μμ
λ€μ μ§νν¨
* >> λ¬΄κ±°μ΄ μμ
μ νλ©΄μ μ°μ 보μ¬μ€ ν μ§νλλλ‘!
*/
console.log("3. componentDidMount - νλ©΄ λ λλ§ μλ£!");
}
componentDidUpdate() {
/**κ°μ΄ λ³κ²½λμ΄ κ°±μ μ΄ μΌμ΄λ μ§νμ νΈμΆ! */
console.log("**κ°μ΄ λ³κ²½λμμ΅λλ€!**");
}
constructor() {
console.log("1. constructor - μ΅μ΄μμ±");
/**constructor : μμ±μ
* νλ©΄μ΄ λ λλ§λκΈ° μ μ μ΄κΈ°ν ν΄μ€μΌ ν κ²λ€μ μ μ
* state, λ³μ, ν¨μ λ± κ°μ μ΄κΈ°νν λ μ¬μ©ν¨
* νλ©΄μ΄ λ λλ§ λκΈ° μ΄μ (κ°μ₯ μ΅μ΄μ λ¨κ³)
* κ·μΉ :
*/
super();
//state κ΄λ¦¬ : {}μμ λ΄κ° κ΄λ¦¬ν΄μ€ λͺ¨λ state μ
λ ₯
this.state = {
num: 0,
};
//μ¬λ³Έν¨μλ₯Ό λ§λ€μ΄μ€
this.handleIncrement = this.handleIncrement.bind(this);
this.handleDecrement = this.handleDecrement.bind(this);
this.handleReset = this.handleReset.bind(this);
}
// ν¨μλ μ νν μμ μ΄ μλκ² μλλΌ νΈμΆνλ©΄ μ¬μ©νλ κ²
handleIncrement() {
console.log("handle Increment Function");
this.setState({
num: (this.state.num += 1),
});
}
handleDecrement() {
console.log("hanle Decrement Function");
this.setState({
num: this.state.num > 0 ? (this.state.num -= 1) : 0,
});
}
handleReset() {
console.log("handle Reset");
this.setState({
num: 0,
});
}
render() {
/**render : νλ©΄μ λ λλ§ν λ
* >> νλ©΄μ ꡬμ±νλ μμλ₯Ό μμ±νλ©΄ λ¨! (DOMμμ/HTMLμμ)
*/
console.log("2. render - νλ©΄μ΄ λ λλ§ λλμ€...");
return (
<div>
<h1>Class Component : {this.state.num}</h1>
<button onClick={this.handleIncrement}>+1</button>
<button onClick={this.handleDecrement}>-1</button>
<button onClick={this.handleReset}>reset</button>
</div>
);
}
}
π ν¨μν μ»΄ν¬λνΈμμ λΌμ΄ν μ¬μ΄ν΄ μ¬μ©νκΈ° : useEffect
λ‘μ§ : componentdidMount λ체
[state] : componentDidUpdate λ체
ν¨μν μ»΄ν¬λνΈμμ λΌμ΄νμ¬μ΄ν΄μ νμ©ν μ μλ useEffect μ¬μ©
import React, { useState, useEffect } from "react";
const Ex02 = () => {
// 1. constructorλ₯Ό λ체
// ν¨μ νΈμΆμ μλμΌλ‘ ν¨μ μ΄κΈ°νλ₯Ό μ§νν¨
// >> state, λ³μ μ΄κΈ°ν
console.log("1. constructorλ₯Ό λ체!");
const [num, setNum] = useState(0);
/**3. νλ©΄ κ°±μ μ§ν - componentDidMount >> useEffect 리μ‘νΈ ν
μ¬μ©
* useEffect(()=>{}, [])
* 첫λ²μ§Έ μΈμ : μ½λ°±ν¨μ (ν¨μ μμ λ€μ΄μλ ν¨μ)
* λλ²μ§Έ μΈμ : λΉμ΄μλ λ°°μ΄
* >> νλ©΄μ λ λλ§μ΄ λλ¬μ λ (Mount) 첫λ²μ§Έ μΈμμ μλ μ½λ°±ν¨μλ₯Ό νΈμΆ!
* API Callκ³Ό κ°μ λ¬΄κ±°μ΄ μμ
μ μ§ν
*/
useEffect(() => {
console.log("3. νλ©΄ λ λλ§ μλ£!");
}, []);
/**4. κ°μ΄ λ³ννμ λ - componentDidUpdate >> useEffect 리μ‘νΈ ν
μ¬μ©
* useEffect(()=>{}, [state])
* 첫λ²μ§Έ μΈμ : μ½λ°±ν¨μ
* λλ²μ§Έ μΈμ : λ³νλ₯Ό κ°μ§ν state
* ex. useEffect(()=>{}, [num]) >> numμ΄λΌλ stateκ° λ³ν λλ§λ€ μ½λ°±ν¨μλ₯Ό νΈμΆ
*/
useEffect(() => {
console.log("** κ°μ΄ λ³ννμ΅λλ€!");
}, [num]);
return (
//2. renderλ₯Ό λ체 >> returnλ¬Έ μ
<div>
{console.log("2. renderλ₯Ό λ체 >> returnλ¬Έ μ")}
<h1>Function Component : {num}</h1>
<button
onClick={() => {
setNum(num + 1);
}}
>
+1
</button>
<button
onClick={() => {
setNum(num - 1);
}}
>
-1
</button>
</div>
);
};
export default Ex02;
ν΄λμ€λ νλ²μ€νλλ©΄ κ³μ νΈμΆλμ§ μμ > μμ±μ 1λ²λ§ μμ±
ν¨μνμ νΈμΆν΄μ μ¬μ©νλ κ²μ΄λ―λ‘ κ³μ μμ±μκ° μμ±λ¨
'Study > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[React] useEffectλ₯Ό ν΅ν΄ openAPI κ°μ Έμ€κΈ° (Fetch, Axios)(2023.05.26) (0) | 2023.05.29 |
---|---|
[React] μ°Έμ°Έμ°Έ κ²μ λ§λ€κΈ° (2023.05.26) (0) | 2023.05.29 |
[React] useRef (2023.05.24) (0) | 2023.05.24 |
[React] To-do List λ§λ€κΈ° (2023.05.23) (0) | 2023.05.24 |
[React] context API (2023.05.22) (0) | 2023.05.22 |