Slack(μ¬λ) μλΉμ€λ₯Ό λ°λΌ λ§λ€λ Reacr Web κ°λ°
β ν΄λΉ κ°μλ₯Ό μκ° ν μμ±ν λ³΅μ΅ λ° κ°μΈ μ€ν°λ κΈ°λ‘μ λλ€.
κ° μμμ Header / WorkspaceWrapper / Workspaces / Channel / ChannelList / DMList / Chats / Modal κ΅¬μ‘°λ‘ λλμ΄ λ μ΄μμμ ꡬμ±νλ€.
λͺ¨λ μμμ μΈλΆννκ² μͺΌκ°μ΄ μ€νμΌ μ»΄ν¬λνΈλ₯Ό μμ νκ² λλ©΄ μΆν μ μ§λ³΄μ λ° μ½λ λΆμμ μ΄λ €μμ΄ μμ μ μλ€.
gravatar, Globally Recognized Avatar
νλ‘ν μ¬μ§ λμ°λ―Έμ΄λ€. μΈν°λ·μ λλΆλΆμ μΉ μ¬μ΄νΈμμλ μλ°νμ κ°μ μ¬μ§
npm install gravatar
gravatar μ€μΉgravatar
μ¬μ© μμApp - index.tsx
μμ μ¬μ©νλ λ©μΈ λΌμ°ν°μμλ Workspaceλ§ μ°κ²° Workspace - index.tsx
μμμ DMκ³Ό Chatsμ λΌμ°ν°λ₯Ό μ°κ²°νλ€./workspace/
pathκ° λμΌνκ² κ³μΈ΅μ μΈ κ΅¬μ‘°λ₯Ό κ°μ ΈμΌ νλ€.showUserMenu
μν κ°μΌλ‘ λͺ¨λ¬ νν μ 무 μν κ΄λ¦¬ (showUserMenu)onClickUserProfile
λͺ¨λ¬ μν λ³νλ₯Ό μν ν΄λ¦ μ΄λ²€νΈμ»΄ν¬λνΈλ₯Ό λλλ κ΅¬λΆ ? π€
μ¬μ¬μ©μ νκΈ°μν΄μ μ»΄ν¬λνΈλ₯Ό ꡬλΆνλ€. νλμ μ»΄ν¬λνΈλ νλμ κΈ°λ₯λ§ νλλ‘ μμ νλ κ²μ΄ μ’λ€. λ³ΈμΈμ νλ¨ λλ νμλ€μ ν©μμ λ°λΌ μ»΄ν¬λνΈμ ꡬλΆμ λν΄ μ νλ κ²μ΄ μ’λ€. ex) λ©λ΄, λͺ¨λ¬
interface Props
props λ°μμ¬ λ°μ΄ν°λ€μ type μ μ μΈν΄μ€λ€.onCloseModal
λΆλͺ¨μ μμμ ν΄λ¦ μμλ λͺ¨λ¬μ΄ λ«νλλ‘ νλ€.stopPropagation
e.stopPropagation(); λ₯Ό ν΅ν΄ μ΄λ²€νΈ λ²λΈλ§μΌλ‘ λ³ΈμΈμ μμμ ν΄λ¦νμ λλ νμ
μ°½μ λ«νμ§ μλλ‘ νλ€.:userData
λ₯Ό ν΅ν΄μ λ³μλͺ
μ λ°κΏμ μ¬μ©νλ€.!newWorkspace || !newWorkspace.trim()
μ
λ ₯ν λ°μ΄ν°κ° μμ κ²½μ° μ ν¨μ± μ²΄ν¬ (trimμ 곡백 μ
λ ₯ μ 체ν¬)
APIμ μμ²μ΄ μλ£ λ νμλ μ λ ₯μ λ°μ΄ν°κ° 리μ λλλ‘νλ€.(μ¬μ©μ κ²½ν)
toast.error
μλ¬ λ°μ μμμλ μ½μ νκΈ°κ° μλ νλ©΄μλ μλ¬ λ©μΈμ§λ₯Ό μΆλ ₯νμ¬ μ¬μ©μκ° μ μ μλλ‘ ν΄μ£Όμ΄μΌ νλ€.toast π€
μλμ μΌλ‘ λνλ¬λ€κ° μ¬λΌμ§λ©° μ¬μ©μμ μ΄λ²€νΈλ₯Ό λ°μ§λ μλ λ¨μ λ©μμ§ νν
Modal
μ λν΄ κ³΅ν΅ μ»΄ν¬λνΈλ‘ λΆλ¦¬input μ΄ λ€μ΄ μλ λͺ¨λ¬ νμ μ°½μ κ²½μ° ( = μ¬μ©μμ μ λ ₯μ΄ νμν κ²½μ°), ν΄λΉ νμ μ°½μ λ°λ‘ λΆλ¦¬λ₯Ό ν΄λλ κ²μ΄ λΆνμν 리λ λλ§μ λ°©μ§ν μ μκ³ μΆν μ μ§λ³΄μμλ μ©μ΄νλ€.
useParams
리μ‘νΈ λΌμ°ν°λ₯Ό ν΅ν΄ νλΌλ―Έν° μ 보λ₯Ό νμ©ν μ μλ€.
νλ‘ νΈ μΈ‘μμλ μ£Όμμ urlμ λν΄ κ·μΉμ μ ν΄λμΌλ©΄ μ£Όμ μ체μμλ λ°μ΄ν°λ₯Ό νμ ν μ μλ€.
userData ? 'true' : 'false'
λ‘κ·ΈμΈ μνμ κ²½μ° userDataκ° μμΌλ―λ‘ null μ²λ¦¬κ° λλλ‘ μ‘°κ±΄λΆ μ°μ°μ μ¬μ©νμ¬ μ²λ¦¬νλ€.
activeClassName
μ§κΈ μ£Όμλ μ΄ Link μ£Όμλ κ°μΌλ©΄ 'selected'λΌλ ClassNameμ΄ λΆμ¬ λλ€.e.key === 'Enter'
μ
λ ₯ν ν€κ° 'Enter' μΌ κ²½μ° ν΄λΉ Submitμ΄ μ μ‘ e.shiftKey
Shift + Enter μ
λ ₯ μ ν
μ€νΈ μ€λ°κΏ λλλ‘ μμ