π₯ μ€λ μ΄λμ λμ ν΄λ³΄μ ¨κ³ , 무μμ λ°°μ°μ ¨λμ?
- Reactμμ JSX μμ λ°ννκΈ°
- React
- useEffect μ¬μ©λ²
- useEffectμ clean-upμΌλ‘ λλ°μ΄μ± ꡬνν΄λ³΄κΈ°
- Portals & Ref
- Portals μ¬μ©λ²κ³Ό μ΄λ²€νΈ λ²λΈλ§
- Ref μ¬μ©λ²
- useEffect μ¬μ©λ²
- μ€μ©μ£Όμ νλ‘κ·Έλλ¨Έ 1μ₯ μ½κΈ°
π νμ΅νμλ©΄μ κΆκΈνμ λΆλΆμ΄λ, μ΄λ €μ λ μ μ λκΉμ?
React.createElement
μΌλ‘ νλμ νκ·Έλ§ λ°νν΄μΌ νλ€κ³ νλλ° μ΄μ κ° κΆκΈ- μμ λΆν° λ£κΈ°λ λ§μ΄ λ€μλ
λλ°μ΄μ±(Debouncing)
κ³Όμ°λ‘νλ§(Throttling)
λ μμΈν μμ보기
π λ΄μΌμ μ΄λ»κ² ν΄λ³΄κ³ μΆμΌμΈμ?
- React - useReducer μμ보기
Reactμμ JSX μμ λ°ννκΈ°
νλμ μ»΄ν¬λνΈλ ν κ°μ μμλ§μ λ°νν΄μΌ νλ€. λ°λΌμ JSX λ¬Έλ²μ μ¬μ©ν λμλ μλμ κ°μ΄ νλμ νκ·Έλ§ λ°νν΄μΌ νλ€.
1
2
3
4
5
6
const Content = () => {
return (
<h2>title</h2>
<p>description</p>
);
};
Content
μ»΄ν¬λνΈλ titleκ³Ό descriptionμ 보μ¬μ£Όλ νκ·Έλ‘ κ΅¬μ±λμ΄μλ€.
νμ§λ§ λ°ν μμλ νλμ νκ·Έλ§ λ°νν΄μΌ νλ―λ‘ μμ κ°μ΄ μ»΄νμΌμ νκ² λλ©΄ μ€λ₯κ° λλ€. JSX λ¬Έλ²μ μ¬μ©νμ¬ μ»΄ν¬λνΈ λ΄μ©μ λ°ννκΈ° μν΄μλ λ€μκ³Ό κ°μ λ°©λ²μ΄ μλ€.
μ΅μμμ
div
νκ·Έλ‘ κ°μΈκΈ°1 2 3 4 5 6 7 8
const content = () => { return ( <div> <h2>title</h2> <p>description</p> </div> ); };
κ°μ₯ κ°λ¨νκ³ λ§μ΄ μ¬μ©νλ λ°©λ²μ΄μ§λ§ μ΄μ κ°μ΄ κ°μΈλ μ©λμ divλ₯Ό μ¬μ©ν μ¬λ¬ μ»΄ν¬λνΈκ° κ²Ήμ³μ§λ©΄
<div> soup(div μ€μ²©)
κ° λ°μνλ€.divκ° λ§μ΄ μ€μ²©λ μλ‘ μλκ° λλ €μ§κ³ μ€νμΌμ μ μ©ν λμλ λ²κ±°λ‘μμ΄ μμ μ μλ€.
JSX μμλ€μ λ°°μ΄μ λ΄μ λ°ν
1 2 3 4 5 6 7 8 9
const content = () => { return ( [ <h2>title</h2> , <p>description</p> ] </div> ); };
λ°°μ΄λ‘ λ°ννκ² λλ©΄ λͺ©λ‘ μ νμ μ»΄ν¬λνΈμ κ°μ΄ κ° μμλ§λ€ key κ°μ λΆμ¬ν΄μΌ νλ€.
UI μμ μλ λμμ μ»΄ν¬λνΈλ‘ κ°μΈκΈ°
1 2 3 4 5 6 7 8 9 10 11 12
const Wrapper = (props) => { return props.children; }; const content = () => { return ( <Wrapper> <h2>title</h2> <p>description</p> </Wrapper> ); };
μ¬κΈ°μ Wrapper μ»΄ν¬λνΈλ JSX λ¬Έλ²μΌλ‘ UI μμλ₯Ό μ¬μ©νμ§ μκ³ κ·Έμ νλΌλ―Έν°λ‘ μ λ¬λ°μ propsμ νμ λ΄μ©λ§ λ°ννλ€.
content μ»΄ν¬λνΈμ λ΄μ©μ Wrapper μ»΄ν¬λνΈλ‘ κ°μΈμ£Όλ©΄ λΆνμν div νκ·Έλ₯Ό μ¬μ©νμ§ μμλ λμ΄ μ½λλ₯Ό κ΄λ¦¬νκ³ μ€νμΌμ μ μ©νκΈ°μ ν¨μ¬ μμνλ€.
<React.fragment>
(λλ<></>
) μ¬μ©νκΈ° 3λ²μ λμμ μ»΄ν¬λνΈμ κΈ°λ₯μ 리μ‘νΈμμ μ 곡ν΄μ£Όλλ° μ΄κ²μ΄ λ°λ‘<React.fragment>
μ΄λ€.