react μ»΄ν¬λνΈ μ μΈνλ 2κ°μ§ λ°©μ
<ν΄λμ€ν μ»΄ν¬λνΈ/ ν¨μν μ»΄ν¬λνΈ>
ν¨μν μ»΄ν¬λνΈλ₯Ό λ§μ΄ μ¬μ©νλλ‘ κΆμ₯νκ³ μμ§λ§,
κΈ°μ΄λ₯Ό μν΄μλ ν΄λμ€ν μ»΄ν¬λνΈλ μκ³ μμ΄μΌνλ€.
VScodeλ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό μμ±νμμ΅λλ€.
VScode νμ₯νλ‘κ·Έλ¨
ES7 React/Redux/GraphQL/React-Native snippetsμ λ€μ΄λ‘λνλ€
ν΄λμ€ν μ»΄ν¬λνΈ jsνμΌμ λ§λ λ€ rceλ₯Ό μ λ ₯νλ©΄ ν΄λμ€ν μ»΄ν¬λνΈ μ½λκ° μλμΌλ‘ μμ±λ©λλ€.
ν¨μν μ»΄ν¬λνΈλ rfceλ₯Ό μ λ ₯νλ©΄λ©λλ€.
import React, {Component} from 'react';
class App extends Component {
render() {
const name = 'react';
return <div className="react">{name}</div>
}
}
export default App;
ν΄λμ€νμμλ κΌ νμν ν€μλκ° μλ€.
import React from 'react';
import './App.css';
function App() {
const name = 'react';
return <div className = "react">{name}</div>
}
export default App;
λ¨Όμ useStateλ₯Ό μ¬μ©νκΈ°μ μ ꡬ쑰 λΆν΄ ν λΉ μ΄λκ±Έ μμ보μ.
μ°λ¦¬κ° κ°μ²΄λ λ°°μ΄μ λ§λ€μλ€κ³ μκ°ν΄λ³΄μ. μ΄κ²μ λ§κ·Έλλ‘ λΆν΄, ν λΉ νλ λ°©λ²μ΄λ€.
//κ°μ²΄ μμ± const obj = { a: 1, b: 2, c: 3 }; //λ°°μ΄ μμ± const array = [5, 6, 7, 8]; console.log(array[1]); //6μΆλ ₯ console.log(obj.a); //1μΆλ ₯
μ΄λ κ² κ°μ²΄μ λ°°μ΄μ΄ μμ±λμλ€κ³ 보μ. μ°λ¦¬κ° μ주보λ λͺ¨μ΅μ΄λ€.
κ·Έλ λ€λ©΄ μ¬κΈ°μ, μ½λλ₯Ό μ‘°κΈ μμ ν΄λ³΄μ
//κ°μ²΄ μμ± const obj = { a: 1, b: 2, c: 3 }; //λ°°μ΄ μμ± const array = [5, 6, 7, 8]; const [apple, bus, car] = array; console.log(apple, bus, car);
λ§μ½ μ½λκ° μ΄λ κ² μμ λλ€λ©΄ console.logμμ μ΄λ€ κ°μ΄ λμ€κ² λ κΉ?
λ΅μ
5 6 7
μ΄ λμ€κ² λλ€.
μ½κ² λ§ν΄μ μ§μ§ λ§λ€μ΄μ§ λ°°μ΄μ λΆν΄ν΄μ λ€λ₯Έ κ°μΌλ‘ ν λΉν΄μ€λ€ μ΄λ°λ»λλ€. useStateμμ μ μ΄ κ΅¬μ‘° λΆν΄ ν λΉ μκΈ°κ° λμ€κ² λ¬λ ν¨μ κ·Έκ²μ λ°λ‘,
useStateνμμ΄ const[state, setState] = useState(A,B);
μ΄λ κ² λκΈ°λλ¬Έμ΄λ€.
useStateμμ 첫 λ²μ§Έ μμκ° state(μνκ°), λλ²μ§Έλ setState(λ³ν)μ μλ―Ένλ€.
λΌμ΄νμ¬μ΄ν΄μ λ©μλλ μ΄ 9κ°
Will μ λμ¬κ° λΆμ λ©μλλ μμ
μ μλνκΈ° μ μ μ€νλλ λ©μλ,
Did μ λμ¬κ° λΆμ λ©μλλ μμ
μ μλν νμ μ€νλλ λ©μλ μ΄λ€.
λΌμ΄νμ¬μ΄ν΄μ λ¨κ³
DOMμ΄ μμ±λκ³ μΉ λΈλΌμ°μ μμ λνλλ κ²μ λ§μ΄νΈλΌκ³ ν¨
constructor
: μ»΄ν¬λνΈλ₯Ό μλ‘ λ§λ€λλ§λ€ νΈμΆλλ ν΄λμ€ μμ±μ λ©μλgetDerivedStateFromProps
: propsμ μλ κ°μ stateμ λ£μ λ μ¬μ©νλ λ©μλrender
: μ°λ¦¬κ° μ€λΉν UIλ₯Ό λ λλ§νλ λ©μλcomponentDidMount
: μ»΄ν¬λνΈκ° μΉ λΈλΌμ°μ μμ λνλ ν νΈμΆνλ λ©μλpropsκ° λ°λ λ, stateκ° λ°λ λ, λΆλͺ¨ μ»΄ν¬λνΈκ° 리λ λλ§λ λ, this.forceUpdateλ‘ κ°μ λ‘ λ λλ§μ νΈλ¦¬κ±°ν λ
getDerivedStateFromProps
: λ§μ΄νΈ κ³Όμ μμλ νΈμΆλ¨, μ
λ°μ΄νΈκ° μμνκΈ° μ μλ νΈμΆ, propsμ λ³νμ λ°λΌ stateκ°μλ λ³νλ₯Ό μ£Όκ³ μΆμ λ μ¬μ©νλ€.shouldComponentUpdate
: μ»΄ν¬λνΈκ° 리λ λλ§ ν΄μΌ ν μ§ λ§μμΌ ν μ§λ₯Ό κ²°μ νλ λ©μλrender
: μ»΄ν¬λνΈ λ¦¬λ λλ§getSnapShotBeforeUpdate
: μ»΄ν¬λνΈ λ³νλ₯Ό DOMμ λ°μνκΈ° λ°λ‘ μ§μ μ νΈμΆνλ λ©μλcomponentDidUpdate
: μ»΄ν¬λνΈμ μ
λ°μ΄νΈ μμ
μ΄ λλ ν νΈμΆνλ λ©μλcomponentWillUnmount
: μ»΄ν¬λνΈκ° μΉ λΈλΌμ°μ μμμ μ¬λΌμ§κΈ° μ μ νΈμΆνλ λ©μλuseEffect
λ 리μ‘νΈ μ»΄ν¬λνΈκ° λ λλ§λ λλ§λ€ νΉμ μμ
μ μννλλ‘ μ€μ ν μ μλ Hookμ΄λ€. ν΄λμ€ν μ»΄ν¬λνΈμ componentDidMount
μ componentDidUpdate
λ₯Ό ν©μΉ ννλ‘ λ³΄μλ 무방νλ€.useReducer
λ useState
λ³΄λ€ λ λ€μν μ»΄ν¬λνΈ μν©μ λ°λΌ λ€μν μνλ₯Ό λ€λ₯Έ κ°μΌλ‘ μ
λ°μ΄νΈν΄ μ£Όκ³ μΆμ λ μ¬μ©νλ Hookμ΄λ€. reducer
λ νμ¬ μν, κ·Έλ¦¬κ³ μ
λ°μ΄νΈλ₯Ό μν΄ νμν μ 보λ₯Ό λ΄μ μ‘μ
(action) κ°μ μ λ¬λ°μ μλ‘μ΄ μνλ₯Ό λ°ννλ ν¨μμ΄λ€. reducer
ν¨μμμ μλ‘μ΄ μνλ₯Ό λ§λ€ λλ λ°λμ λΆλ³μ±μ μ§μΌ μ£Όμ΄μΌ νλ€.useMemo
λ ν¨μν μ»΄ν¬λνΈ λ΄λΆμμ λ°μνλ μ°μ°μ μ΅μ νν μ μλ€.useCallback
μ useMemoμ λΉμ·νλ€(μ΅μ νμ μ¬μ©) useCallback
μ μ¬μ©νλ©΄ λ§λ€μ΄ λλ ν¨μλ₯Ό μ¬μ¬μ©ν μ μλ€promise
λ callback μ§μ₯κ°μ μ½λκ° νμ±λμ§ μκ² νλ λ°©μμ
λλ€..then
μ μ¬μ©ν΄μ κ·Έ λ€μ μμ
μ μ€μ νκΈ° λλ¬Έμ callbackμ§μ₯μ΄ νμ±λμ§ μμ΅λλ€.Promise
λ₯Ό μ½κ² μ¬μ©ν μ μλλ‘ ν΄ μ£Όλ λ¬Έλ²μ΄λ€.async
ν€μλλ₯Ό μΆκ°νκ³ , ν΄λΉ ν¨μλ΄λΆμμ Promise
μ μλΆλΆμ await
ν€μλλ₯Ό μ¬μ©ν©λλ€. μ΄λ κ² νλ©΄ Promise
κ° λλ λκΉμ§ κΈ°λ€λ¦¬κ³ , κ²°κ³Ό κ°μ νΉμ λ³μμ λ΄μ μ μμ΅λλ€.async/await
μ async () => {}
νμμΌλ‘ μ μ©