React

    λ¦¬μ•‘νŠΈ λ””μžμΈ νŒ¨ν„΄μ— λŒ€ν•΄μ„œ..

    πŸ€” ν¬μŠ€νŒ… 이유 맀주 기술 λ©˜ν† λ‹˜μ—κ²Œ ν”„λ‘œμ νŠΈ ν”Όλ“œλ°±μ„ λ°›κ³  μžˆλŠ”λ°, λ””μžμΈ νŒ¨ν„΄μ— λŒ€ν•΄ 곡뢀해 λ³΄λΌλŠ” ν”Όλ“œλ°±μ„ λ°›μ•˜λ‹€. μ•„ν† λ―Ή νŒ¨ν„΄.. 무슨 무슨 νŒ¨ν„΄.. μ˜ˆμ‹œλ₯Ό λ“€μ–΄μ£Όμ…¨λŠ”λ°, 기술 κ΅¬ν˜„μ—λ§Œ μ΄ˆμ μ„ λ§žμΆ”λŠλΌ 곡뢀λ₯Ό λ―Έλ€˜λ‹€κ°€ μ˜€λŠ˜μ—μ„œμ•Ό μ°Ύμ•„λ³Έλ‹€! πŸ₯² 곡뢀 ν›„ κ²°λ‘  ν˜„ ν”„λ‘œμ νŠΈμ˜ λŒ€λΆ€λΆ„μ€ Presentational and Container Component Pattern (μ΄ν•˜ PCC) 을 λ”°λ₯΄κ³  있고 Pages μ—μ„œ μƒνƒœ 관리λ₯Ό ν•˜κ³  μžˆλŠ” 뢀뢄은 Atomic Design Pattern (μ΄ν•˜ Atom) κ³Ό λΉ„μŠ·ν–ˆλ‹€. PCC 방식을 μ‚¬μš©ν•˜λ©΄ 관심사 뢄리λ₯Ό μž˜ν•  수 μžˆλ‹€. 둜직 λΆ€λΆ„κ³Ό UI 뢄리가 μš©μ΄ν•˜λ‹€. κ·ΈλŸ¬λ‚˜ props λ“œλ¦΄λ§μ΄ 많이 μƒκ²¨μ„œ μ½”λ“œκ°€ λ³΅μž‘ν•΄μ§€κ³  독립성이 떨어진닀. Atom 을 μ“°λ©΄ μ»΄ν¬λ„Œ..

    React μƒνƒœ 관리 비ꡐ Redux & React Query & SWR

    μƒνƒœ 관리에 λŒ€ν•œ κ³ λ―Ό ν”„λ‘œμ νŠΈμ˜ λŒ“κΈ€ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λ˜ 쀑, μŠ΅κ΄€μ μœΌλ‘œ μ‚¬μš©ν–ˆλ˜ λ¦¬λ•μŠ€ μ½”λ“œλ₯Ό κ±·μ–΄λ‚΄κ³  λ‚˜λ‹ˆ μƒˆλ‘œμš΄ λ¬Έμ œμ μ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. λŒ“κΈ€ 생성, μ—…λ°μ΄νŠΈ, μ‚­μ œμ‹œ μ„œλ²„μ— API λ₯Ό μš”μ²­ν•˜κ³  응닡 값을 λ°›μ•„ μ˜€κΈ°κΉŒμ§€μ˜ μ‹œκ°„μ΄ κ½€λ‚˜(?) κΈΈλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 응닡값에 따라 성곡 μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜κ³  μΆ”κ°€(μˆ˜μ •,μ‚­μ œ) 된 λŒ“κΈ€μ„ 보여주기 λ•Œλ¬Έμ— 이 뢀뢄은 μ–΄μ©” 수 μ—†λŠ” λΆ€λΆ„μ΄λΌλŠ” 생각이 λ“€μ—ˆμ§€λ§Œ..? μˆœκ°„, λ‹€λ₯Έ μ„œλΉ„μŠ€λ“€μ€ μ–΄λ–»κ²Œ μ‹€μ‹œκ°„μœΌλ‘œ λ°˜μ‘ν•˜μ§€?! λΌλŠ” 의문점이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€. μ°Ύμ•„ λ³΄λ‹ˆ, ν•΄κ²° 방법은 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μš”μ²­μ΄ μ„±κ³΅ν–ˆμ„ 것이라 μ˜ˆμƒν•˜κ³  값을 미리 보여주고! κ·Έ λ‹€μŒ μ„œλ²„μ—μ„œ 응닡 값을 λ°›μ•˜μ„ λ•Œ, μ‹€νŒ¨ν–ˆλ‹€λ©΄ 값을 거둬 λ“€μ΄λŠ” κ²ƒμž…λ‹ˆλ‹€. μ €λŠ” 이 방법을 ν™œμš©ν•΄μ•Ό κ² λ‹€λŠ” 생각이 λ“€μ—ˆκ³  ν˜„ ν”„λ‘œμ νŠΈμ— 잘..

    React Redux Toolkit μ‚¬μš©ν•˜κΈ°

    React Redux Toolkit μ‚¬μš©ν•˜κΈ°

    Redux Toolkit 은 Redux λ₯Ό 더 νŽΈν•˜κ²Œ μ“°κΈ° μœ„ν•΄ λ‚˜μ™”μŠ΅λ‹ˆλ‹€. κΈ°λ³Έ μ‚¬μš©λ²•μ€ κ°™μœΌλ‚˜ Module 파일이 더 κ°„κ²°ν•˜κ²Œ λ°”λ€Œμ—ˆμŠ΅λ‹ˆλ‹€. 1. νˆ΄ν‚· μ„€μΉ˜ν•˜κΈ° CRA λ₯Ό 톡해 μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜κ³  yarn 을 ν†΅ν•΄μ„œ μ•„λž˜ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ yarn add react-redux @reduxjs/toolkit 2. Redux 와 Redux Toolkit 의 차이점 큰 차이점은 Action Value와 Action Creatorλ₯Ό 이제 직접 생성해주지 μ•Šκ³  Action Value, Action Creator, Reducer κ°€ ν•˜λ‚˜λ‘œ ν•©μ³μ‘Œλ‹€λŠ” μ μž…λ‹ˆλ‹€. ν•˜λ‚˜λ‘œ ν•©μΉ λ•Œ Slice λΌλŠ” API λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 이 Slice λ₯Ό μ‚¬μš©ν•˜λ©΄, ν•œ λ²ˆμ— 3κ°œκ°€ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€. 3. Redux Toolkit μ‚¬μš©..

    React Hook μ΄λž€ ?

    React Hook μ΄λž€ ?

    Hook μ •μ˜ React 곡식 λ¬Έμ„œμ˜ Hook 의 μ •μ˜μž…λ‹ˆλ‹€. Hook 은 ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλ„ 생λͺ…μ£ΌκΈ° κΈ°λŠ₯을 μ‚¬μš©ν•  수 있게 ν•¨μœΌλ‘œμ¨, ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ˜ ν™œμš©μ„±μ„ 높이기 μœ„ν•΄ λ‚˜μ˜¨ ν•¨μˆ˜μž…λ‹ˆλ‹€. 덕뢄에 λ³΅μž‘ν•œ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ§Œμ„ μ‚¬μš©ν•˜μ§€ μ•Šμ•„λ„ λ©λ‹ˆλ‹€. Hook 을 ν”„λ‘œμ νŠΈμ— λ„μž…ν•˜κΈ° μœ„ν•΄ 기쑴의 class ν˜• μ»΄ν¬λ„ŒνŠΈλ“€μ„ μˆ˜μ •ν•  ν•„μš”λŠ” μ—†λ‹€κ³  ν•©λ‹ˆλ‹€. 곡식 λ¬Έμ„œμ—μ„œ μ„€λͺ…ν•˜λ“―이 μ μ§„μ μœΌλ‘œ 적용 ν•΄λ‚˜λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€. Hook μ’…λ₯˜ λ¦¬μ•‘νŠΈμ—μ„œ μ œκ³΅ν•˜λŠ” Hook 듀이 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©μžλ“€μ΄ ν•„μš”ν•œ Hook 을 λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€. 이것을 Custom Hook 이라고 ν•˜λŠ”λ°, κ°œμΈλ“€μ΄ λ§Œλ“  μœ μš©ν•œ Hook 듀은 npm 을 톡해 λ‹€μš΄λ°›μ•„ μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. λ¦¬μ•‘νŠΈ 곡식 λ¬Έμ„œμ— λ‚˜μ™€ μžˆλŠ” H..

    React Life Cycle [ Class component 와 Function component ]

    React Life Cycle [ Class component 와 Function component ]

    React Life Cycle μ΄λž€? LifeCycle 은 μ»΄ν¬λ„ŒνŠΈμ˜ 생λͺ…μ£ΌκΈ°μž…λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈκ°€ λΈŒλΌμš°μ €μƒμ— λ‚˜νƒ€λ‚˜κ³ , μ—…λ°μ΄νŠΈλ˜κ³ , μ‚¬λΌμ§ˆ λ•Œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œλ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€. 이 λ©”μ„œλ“œλ“€μ„ 생λͺ…μ£ΌκΈ° λ©”μ„œλ“œλΌκ³  ν•©λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” Class component 와 function component κ°€ μžˆμŠ΅λ‹ˆλ‹€. Class Component Life Cycle Class Component μ—μ„œλŠ” 라이프 사이클에 λ”°λΌμ„œ μš°λ¦¬κ°€ μ›ν•˜λŠ” μˆœκ°„μ— μ›ν•˜λŠ” μ½”λ“œλ₯Όμ‹€ν–‰μ‹œν‚€κ³  μ‹Άλ‹€λ©΄, 정해진 λ©”μ†Œλ“œλ₯Ό ν†΅ν•΄μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ›λž˜ function component μ—μ„œλŠ” λΆˆκ°€λŠ₯ν–ˆμ§€λ§Œ, ν˜„μž¬λŠ” hook 을 ν†΅ν•΄μ„œ κ°€λŠ₯ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 전체적인 흐름은 μœ„μ˜ 이미지λ₯Ό μ°Έκ³ ν–ˆμ§€λ§Œ 세뢀적인 λ©”μ„œλ“œλͺ…은 곡식 λ¬Έμ„œλ₯Ό μ°Έκ³ ν–ˆμŠ΅λ‹ˆλ‹€...

    React Ref 와 Dom

    RefλŠ” render λ©”μ„œλ“œμ—μ„œ μƒμ„±λœ DOM λ…Έλ“œλ‚˜ React μ—˜λ¦¬λ¨ΌνŠΈμ— μ ‘κ·Όν•˜λŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. μ§μ ‘μ μœΌλ‘œ μžμ‹μ„ μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. κ·Έ μžμ‹μ€ React μ»΄ν¬λ„ŒνŠΈμ˜ μΈμŠ€ν„΄μŠ€ ν˜Ήμ€ Dom μ—˜λ¦¬λ¨ΌνŠΈ 일 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 두 가지 λͺ¨λ‘ μˆ˜μ •ν•  수 μžˆλŠ” 방법이 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Ref λŠ” λ‚¨μš©ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€. ν•„μš”ν•œ μƒν™©μ—μ„œλ§Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. Refλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  λ•Œ - 포컀슀, ν…μŠ€νŠΈ μ„ νƒμ˜μ—­, ν˜Ήμ€ λ―Έλ””μ–΄μ˜ μž¬μƒμ„ 관리할 λ•Œ. - μ• λ‹ˆλ©”μ΄μ…˜μ„ μ§μ ‘μ μœΌλ‘œ μ‹€ν–‰μ‹œν‚¬ λ•Œ. - μ„œλ“œ νŒŒν‹° DOM 라이브러리λ₯Ό React와 같이 μ‚¬μš©ν•  λ•Œ 클래슀 μ»΄ν¬λ„ŒνŠΈμ™€ ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈκ°€ ref λ₯Ό ν™œμš©ν•  수 μžˆλŠ” λ²”μœ„κ°€ λ‹€λ¦…λ‹ˆλ‹€. ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈλŠ” μΈμŠ€ν„΄μŠ€κ°€ μ—†κΈ° λ•Œλ¬Έμ— ν•¨μˆ˜ μ»΄ν¬λ„ŒνŠΈμ— ref μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό μ‚¬μš©ν•  ..

    React 데이터 바인딩

    React λŠ” 단방ν–₯ 데이터 바인딩을 ν•©λ‹ˆλ‹€. 데이터 λ°”μΈλ”©μ΄λž€? 화면에 λ³΄μ΄λŠ” 데이터와 λΈŒλΌμš°μ € λ©”λͺ¨λ¦¬μ— μžˆλŠ” 데이터λ₯Ό 일치 μ‹œν‚€λŠ” 것을 λ§ν•©λ‹ˆλ‹€. MVC μ—μ„œ View(화면에 λ³΄μ΄λŠ” 데이터, HTML) Model(λΈŒλΌμš°μ € λ©”λͺ¨λ¦¬μ— μžˆλŠ” 데이터, JS) 에 ν•΄λ‹Ήλ©λ‹ˆλ‹€. 데이터 바인딩은 μ–‘λ°©ν–₯κ³Ό 단방ν–₯으둜 λ‚˜λ‰©λ‹ˆλ‹€. 단방ν–₯ 데이터 바인딩 ν•œμͺ½ λ°©ν–₯으둜만 μ œμ–΄κ°€ κ°€λŠ₯ν•œ 것을 μ˜λ―Έν•©λ‹ˆλ‹€. JS(Model) μ—μ„œλŠ” 화면에 λ³΄μ΄λŠ” 데이터λ₯Ό μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‚¬μš©μžλŠ” ν™”λ©΄μ—μ„œ 값을 λ³€κ²½ν•  μˆ˜λŠ” μžˆμ§€λ§Œ JS 에 μžˆλŠ” 데이터λ₯Ό μˆ˜μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— ν™”λ©΄μ—μ„œ λ³€κ²½λœ 값을 κ°μ§€ν•΄μ„œ JS λ₯Ό μˆ˜μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. React 의 경우 state κ°€ 변경이 되면 set 으둜 값을 λ°”κΏ” μ£ΌλŠ” μž‘μ—…μ„ ν•΄μ•Ό ν•©λ‹ˆλ‹€...

    React ν”„λ‘œμ νŠΈ GitHub Pages λ°°ν¬ν•˜κΈ°

    React ν”„λ‘œμ νŠΈ GitHub Pages λ°°ν¬ν•˜κΈ°

    https://github.com/ λ¨Όμ € μœ„ μ‚¬μ΄νŠΈμ—μ„œ μƒˆλ‘œμš΄ Repository λ₯Ό λ§Œλ“­λ‹ˆλ‹€. νšŒμ› κ°€μž…μ„ ν•΄μ•Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. Repository 메뉴에 λ“€μ–΄κ°€λ©΄ λ…Ήμƒ‰μ˜ New λ²„νŠΌμ΄ μžˆμŠ΅λ‹ˆλ‹€. ν΄λ¦­ν•΄μ„œ 이름을 μž‘μ„±ν•˜κ³  public 으둜 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. 생성을 ν•˜κ³  λ‚˜λ©΄ 방금 λ§Œλ“  Repo λ₯Ό ν΄λ¦­ν•΄μ„œ λ“€μ–΄κ°‘λ‹ˆλ‹€. 그럼 μ•„λž˜μ™€ 같이 λœ¨λŠ”λ° μ—¬κΈ°μ„œ λ…Ήμƒ‰μ˜ Code λ₯Ό ν΄λ¦­ν•˜μ—¬ Https νƒ­μ˜ 경둜λ₯Ό λ³΅μ‚¬ν•©λ‹ˆλ‹€. 터미널을 μΌ­λ‹ˆλ‹€. μœ„μ—μ„œ λ§Œλ“  κΉƒν—™ Repo 와 μ—°κ²°ν•  ν”„λ‘œμ νŠΈ ν΄λ”λ‘œ μ΄λ™ν•©λ‹ˆλ‹€. cd git remote add origin μ΄λ™ν•œ 후에 μœ„μ™€ 같이 μž…λ ₯ν•©λ‹ˆλ‹€. λΆ€λΆ„μ—λŠ” μ•„κΉŒ λ³΅μ‚¬ν•œ github 의 repo μ£Όμ†Œλ₯Ό λ„£μ–΄ μ€λ‹ˆλ‹€. μ•„λ¬΄λŸ° 였λ₯˜ λ©”μ‹œμ§€κ°€ λœ¨μ§€ μ•ŠλŠ”λ‹€λ©΄ 잘 μ—°κ²°λœ κ²λ‹ˆλ‹€. gi..

    React Component

    Component μ •μ˜ μ»΄ν¬λ„ŒνŠΈλŠ” UIλ₯Ό μž¬μ‚¬μš© κ°€λŠ₯ν•œ κ°œλ³„μ μΈ 쑰각으둜 λ‚˜λˆˆ 것을 λ§ν•©λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” React μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό λ°˜ν™˜ν•˜λŠ”λ°, μ—˜λ¦¬λ¨ΌνŠΈλŠ” 화면에 ν‘œμ‹œν•  λ‚΄μš©μ„ κΈ°μˆ ν•˜λŠ” React 의 κ°€μž₯ μž‘μ€ λ‹¨μœ„μž…λ‹ˆλ‹€. λ¦¬μ•‘νŠΈλŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ˜ 집합이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈ 덕에 μž¬ν™œμš©μ„±μ„ 높이고 μœ μ§€λ³΄μˆ˜λ₯Ό μš©μ΄ν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ»΄ν¬λ„ŒνŠΈλŠ” 독립적이고 κ³ λ¦½λ˜μ–΄μžˆκ³  μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈλŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ™€ ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλ‘œ λ‚˜λˆ μ§‘λ‹ˆλ‹€. ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” μ•„λž˜μ™€ 같이 μƒκ²ΌμŠ΅λ‹ˆλ‹€. function Welcome(props) { return Hello, {props.name}; } ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈλŠ” μ•„λž˜μ™€ 같이 μƒκ²ΌμŠ΅λ‹ˆλ‹€. class Welcome extends React.C..

    React JSX λž€?

    JSX μ •μ˜ JSX λŠ” JavaScript λ₯Ό ν™•μž₯ν•œ λ¬Έλ²•μž…λ‹ˆλ‹€. JSX ν˜•μ‹μœΌλ‘œ μž‘μ„±ν•œ μ½”λ“œλŠ” λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰λ˜κΈ° μ „, 바벨 Babel 을 μ΄μš©ν•΄ JSXλ₯Ό React.createElement() 호좜둜 μ»΄νŒŒμΌλ©λ‹ˆλ‹€. 즉, JSX λŠ” νŽΈν•˜κ²Œ React 'element' λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•©λ‹ˆλ‹€. const element = ( Hello, world! ); μœ„μ˜ μ½”λ“œκ°€ JSX λ¬Έλ²•μœΌλ‘œ μž‘μ„±ν•œ κ²ƒμž…λ‹ˆλ‹€. 이 μ½”λ“œλŠ” 컴파일 ν›„ μ•„λž˜μ™€ 같이 λ³€κ²½λ©λ‹ˆλ‹€. μ•„λž˜μ˜ μ½”λ“œλŠ” React μ—˜λ¦¬λ¨ΌνŠΈμž…λ‹ˆλ‹€. React λŠ” 이 객체λ₯Ό μ½μ–΄μ„œ DOM을 κ΅¬μ„±ν•˜κ³  μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜λŠ” 데 μ‚¬μš©ν•©λ‹ˆλ‹€. const element = React.createElement( 'h1', {className: 'greeting'}, '..