리μ‘νΈ μ€νλ¦°νΈκ° λ²μ¨ μ’ λ£κ° λμλ€. μΌλ¨ μ΄λ² μ€νλ¦°νΈμμ λ€λ£¬ λ΄μ©μ μ΄ν΄ 보μλ©΄
리μ‘νΈκ° 무μμΈμ§? λ 리μ‘νΈ μ»΄ν¬λνΈλ 무μμΈκ°, ν΄λμ€ μ»΄ν¬λνΈλ λκ³ , state μ lifeCycleμ λκ°?
μ΄λ° ν° μ£Όμ λ€λ‘ youtube API κ²μμ ν΅ν΄ youtube μμμ λΆλ¬μ€κ³ iframeμ λ£μ΄μ£Όκ³
λμ€μ λ€μ λ³Ό μμμ LocalStorageμ λ£μ΄μ£Όκ³ λ μμ νλ κΈ°λ₯κΉμ§ ꡬνμ νλ€.
λ¬Όλ‘ μ€νμΌλ§μ μν΄μ 보기μλ λ³λ‘μ§λ§ μΌλ¨ κΈ°λ₯μ μΆ©μ€νλ €κ³ νλ€.
μΌλ¨ λλ ν 리 ꡬμ±μ λ€μκ³Ό κ°λ€.
components ν΄λ μΈλΆμλ rootμΈ index.jsμ μ νλΈ λ°μ΄ν°λ₯Ό κ°μ Έμ€κ±°λ λ‘컬 μ€ν 리μ§μμ
λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λͺ¨λμ λ§λ€μ΄μ μ¬μ©νλ€.
κ·ΈλΌ μ»΄ν¬λνΈ κ΅¬μ±μ μ΄ν΄λ³΄λ©΄ μλ μ¬μ§κ³Ό κ°λ€.
μΌλ¨ context APIλ redux λ±μ μν κ΄λ¦¬ κΈ°λ₯μ μ¬μ©νμ§ μκ³ λͺ¨λ stateλ₯Ό App.jsμμ κ΄λ¦¬νκ³
μμ μ»΄ν¬λνΈμ νΈλ€λ¬ ν¨μλ₯Ό propsλ‘ λ΄λ €μ£Όμ΄ lifting state up λ°©μμΌλ‘ stateλ₯Ό λ°κΏμ£Όλλ‘ νμλ€.
λ°λΌμ Search μ»΄ν¬λνΈμλ submitμ ν λ inputμ valueλ₯Ό App.jsμ stateλ‘ λ³΄λ΄μ£Όκ³ APIμμ²μ 쿼리 μ€νΈλ§μΌλ‘ λ£μ΄μ€¬λ€.
VideoPlayer μ»΄ν¬λνΈμμλ κ²μμ ν μ§ν νλ©΄μμλ VideoListμ 첫λ²μ§Έ μμμ΄ λμ€λλ‘ μ€μ μ νμκ³
λ§€λ² κ²μλ§λ€ μ²λ¦¬λ₯Ό ν΄μ€μΌνλ κ²μμ νλ ν¨μμμ λμμ μμΌμ€¬λ€.
VideoList μμλ κ²μ κ²°κ³Όλ‘ λμ¨ λ°μ΄ν°κ° setStateλλ©΄ propsλ‘ λ°μμ mapν¨μλ₯Ό μ΄μ©ν΄
videoμ κ°μ λ§νΌ VideoListEntryλ₯Ό μμ±ν΄μ€λ€.
VideoListEntryμλ μΈλ€μΌ, νμ΄ν, μ€λͺ , μ μ₯ λ²νΌμ΄ λ€μ΄κ°κ² μ€μ μ ν΄μ£Όμλ€.
μ μ₯ λ²νΌμ λλ₯΄λ©΄ localStorage.setItemμ μ€ννμ¬ κ°μ videoμ μ 보λ₯Ό μ μ₯ν΄μ£Όμκ³
stateμλ μΆκ°λ₯Ό ν΄μ£Όμλ€. λ°λΌμ μ μ₯μ νλ©΄ μ¦κ°μ μΌλ‘ μ μ₯λ λΉλμ€μ μΆκ°κ° λκ³
μμ λ²νΌμ λλ μ λλ λκ°μ΄ filterλ₯Ό κ±°μΉ λ°μ΄ν° λ°°μ΄μ΄ setStateλκ³ setItemμ΄ λλ λ°©μμ΄λ€.
λν componentDidMount λ©μλλ₯Ό μ΄μ©νμ¬ μ΄κΈ° νλ©΄μ localStorageμ μλ λΉλμ€λ€μ watchLaterListμ κ·Έλ €μ£Όμλ€.
λ§μ§λ§μΌλ‘ κ²μμ΄ stateκ° λ°λ λλ§λ€ μ 체 μ»΄ν¬λνΈκ° 리 λ λλ§λλ νμμ΄ μμ΄μ App μ»΄ν¬λνΈλ₯Ό μ μΈν λλ¨Έμ§ μμ μ»΄ν¬λνΈλ€μ ν¨μ μ»΄ν¬λνΈλΌ React.memoλ₯Ό μ¬μ©ν΄μ λΆνμν λ λλ§μ λ§μ μ£Όμλ€.
μ‘°κΈ μμ¬μ΄ λΆλΆμ μ€νμΌμ μΈλΌμΈ μ€νμΌλ‘ μμ±νλ€λκ²κ³Ό κ³Όμ ν μ€νΈ μꡬνλ μ¬νμΌλ‘ ν΄λμ€ μ»΄ν¬λνΈλ₯Ό μ¬μ©νλ€λ κ²μ΄λ€.
κΌ μ΄λΆλΆμ styled-componentμ ν¨μ μ»΄ν¬λνΈλ₯Ό μ΄μ©ν΄ 리ν©ν λ§μ ν΄λ΄μΌκ² λ€.
λ reduxκΉμ§λ μ¬μ©νκΈ°μ λΆνμν΄λ³΄μ΄κ³ context API, useReducer μ λ μ΄μ©ν΄μ μνκ΄λ¦¬λ₯Ό νλ©΄ μ’μ κ±° κ°λ€.
λ΄μΌλΆν° 리λμ€ μ€νλ¦°νΈκ° μμλλλ° λ€λ₯Έ λκΈ° λΆλ€μ μ νκ³ κ³μλ €λ κ±±μ μ΄ μ‘°κΈλλ€.
μλ λ§κ³ μ½μ§μμ λ΄μ©μ΄ μμμν λ° λ€λ€ μ‘°κΈλ§ λ νλ΄μ νλ‘μ νΈκΉμ§ λ¬λ ΈμΌλ©΄ μ’κ² λ€.