πŸ”₯ Trouble Shooting

    Text content did not match. Server: "x" Client: "o"

    μœ„μ™€ 같은 였λ₯˜κ°€ κ°„ν—μ μœΌλ‘œ λ°œμƒ. 말 κ·ΈλŒ€λ‘œ 됐닀 μ•ˆλλ‹€ ν•΄μ„œ.. γ…Žγ…Žγ…Žγ…Žγ…Žγ…Ž ν˜Όλž€μŠ€λŸ¬μ› λ‹€. 였λ₯˜ 원인 Next.js λŠ” 기본적으둜 SSR 을 따름. μœ„μ˜ 였λ₯˜λŠ” λΈŒλΌμš°μ €μ—μ„œ λ Œλ”λ§ ν•œ HTMLκ³Ό μ„œλ²„μ˜ HTML 이 μΌμΉ˜ν•˜μ§€ μ•Šλ‹€λŠ” 였λ₯˜λ‹€. 사싀 μ—¬κΈ°μ„œλΆ€ν„° 이해가 μ•ˆ 됨.. μ„œλ²„μ—μ„œ λ‹€ λ§Œλ“€μ–΄μ„œ λ³΄λ‚΄μ£ΌλŠ”λ° μ™œ λΈŒλΌμš°μ €λž‘ λΉ„κ΅ν•΄μ„œ 였λ₯˜κ°€ λ‚œλ‹€λŠ” 거지..? 😭 근데, μ°Έκ³ ν•œ 첫 번째 링크λ₯Ό 보면, λΈŒλΌμš°μ €μ—μ„œ DOM을 λ§Œλ“€κ³  Hydrate ν•˜λŠ” μž‘μ—…μ—μ„œ 각자 가지고 μžˆλŠ” HTML 이 λ‹€λ₯΄λ‹€λŠ” 것. λ‚΄ 였λ₯˜μ˜ 경우 μ € Hey 뒀에 μžˆλŠ” μ‚¬μš©μžκ°€ x와 oλ₯Ό 랜덀 ν•˜κ²Œ 갖도둝 μ΄ˆκΈ°ν™”κ°€ λ˜μ–΄ μžˆλŠ”λ°, μ—¬κΈ°μ„œ λΈŒλΌμš°μ €λž‘ μ„œλ²„κ°€ λ‘˜ λ‹€ 같은 μ‚¬μš©μž(λ‘˜ λ‹€ x, λ‘˜ λ‹€ o) λ©΄ 였λ₯˜κ°€ μ•ˆ λ‚˜κ³  λ‹€λ₯΄λ©΄ 였λ₯˜κ°€ λ‚˜λŠ” κ±°μ˜€..

    Github Action test κ°€ λλ‚˜μ§€ μ•ŠλŠ”λ‹€..

    Github Action으둜 CICD μ μš©ν•˜λ €λŠ”λ°, test κ°€ 계속 λŒμ•„κ°€λ©° λλ‚˜μ§€ μ•Šμ•˜λ‹€. 39λΆ„ κ±Έλ¦° 것도 λ‚΄κ°€ 쀑간에 μ·¨μ†Œν•΄μ„œ μ € 정도.. test κ°€ λ‘œμ»¬μ—μ„  μ„±κ³΅ν–ˆκ³ , actionμ—μ„œλ„ 성곡은 함! 근데 λ‹€μŒμœΌλ‘œ λ„˜μ–΄κ°€μ§€λŠ” μ•Šμ•˜λ‹€. πŸ₯² κ·Έλž˜μ„œ yarn 으둜 λ°”κΏ¨λ‹€κ°€ env: CI=trueλ₯Ό μΆ”κ°€ν–ˆλ‹€κ°€ λ‚œλ¦¬ μΉ˜λ‹€κ°€ κ²°κ΅­ 찾아냄. package.json의 script의 test에 --watchAll μ˜΅μ…˜μ„ μ€€ 것을 μ‚­μ œν–ˆλ”λ‹ˆ 됐닀! κ·Έ μ˜΅μ…˜ λ•Œλ¬Έμ— 계속 ν…ŒμŠ€νŠΈκ°€ λŒμ•„κ°€λŠ” κ±°μ˜€λ‹€.. 저것도 λͺ¨λ₯΄κ³  2μ‹œκ°„ κ°€κΉŒμ΄ μ‚½μ§ˆν–ˆλ‹€ 😭 μ•„λž˜ 처럼 μ§€μ›Œμ£Όμ—ˆλ”λ‹ˆ 잘 λœλ‹€! μ°Έκ³  https://github.com/orgs/community/discussions/25250

    Husky pre-commit fails with code 1 (error)

    yml νŒŒμΌμ— 문법이 ν‹€λ¦° 곳이 μ—†λŠ”λ° μ»€λ°‹ν•˜λ €κ³  ν•˜λ©΄ 계속 이런 였λ₯˜κ°€ λ–΄λ‹€. ν•΄λ‹Ή νŒŒμΌμ€ eslint λ¬΄μ‹œν•œλ‹€κ³  λͺ…μ‹œλ₯Ό ν•΄μ€˜λ„ 계속 컀밋이 μ•ˆλ¨. git commit -m "message" --no-verify 컀밋할 λ•Œ μ΄λ ‡κ²Œ λͺ…μ‹œν•˜μ—¬ 해결함! μ°Έκ³  https://github.com/typicode/husky/issues/1014

    Netlify 배포 process.env.CI = true 였λ₯˜ / Preview κΈ°λŠ₯ μ΄μš©ν•˜κΈ°

    Netlify 배포 process.env.CI = true 였λ₯˜ / Preview κΈ°λŠ₯ μ΄μš©ν•˜κΈ°

    Netlify λ°°ν¬λŠ” ꡉμž₯히 쉽닀! vercel 만큼 쉬움. 깃헙을 μ—°κ²°ν•˜κ³  ν™˜κ²½ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄, λ„£μ–΄μ£Όλ©΄ 끝! 근데 λ°°ν¬ν•˜λ‹€κ°€ 이런 였λ₯˜κ°€ λ–΄λ‹€. λ³€μˆ˜κ°€ true 둜 λ˜μ–΄ μžˆμ–΄μ„œ κ·Έλž¬λ‹€. 배포 μ„ΈνŒ…μœΌλ‘œ λ“€μ–΄κ°„λ‹€. λΉŒλ“œ μ„ΈνŒ… λΆ€λΆ„μ—μ„œ CI=false λ₯Ό yarn build μ•žμ— μΆ”κ°€ν•΄μ£Όλ©΄ λœλ‹€! λΉŒλ“œκ°€ μ„±κ³΅μ μœΌλ‘œ 됐닀! 🀭 Netlify μ‚¬μš© 이유! ν˜„ ν”„λ‘œμ νŠΈλŠ” λͺ¨λ°”일 기쀀이라 ν•„μˆ˜μ μœΌλ‘œ λͺ¨λ°”μΌλ‘œ UIUX λ₯Ό 체크해야 ν•œλ‹€. λ•Œλ¬Έμ— main 에 ν•©μΉ˜κΈ° μ „, λ‚΄κ°€ μˆ˜μ •ν•œ 것이 λͺ¨λ°”μΌμ—μ„œλ„ μ›ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ”μ§€ μˆ˜μ‹œλ‘œ 확인을 ν•΄μ€˜μ•Ό ν•œλ‹€. 이럴 λ•Œ μœ μš©ν•˜κ²Œ μ“°μ΄λŠ” Netlify 의 프리뷰 κΈ°λŠ₯!!!!! 이걸 μ΄μ œμ„œλΌλ„ μ•Œκ²Œ 된 것에 정말 κ°μ‚¬ν•˜λ‹€ γ… γ…  dev 에 pr 을 보내고 merge κ°€ 되..

    λ Œλ”λ§μ΄ 3번 λœλ‹€..

    λ Œλ”λ§μ΄ 3번 λœλ‹€..

    λ¦¬μ•‘νŠΈμ—μ„œ λ Œλ”λ§ λ˜λŠ” 이유. 1. state 변경이 μžˆμ„ λ•Œ 2. μƒˆλ‘œμš΄ props κ°€ λ“€μ–΄μ˜¬ λ•Œ(props μ—…λ°μ΄νŠΈ) 3. λΆ€λͺ¨κ°€ λ Œλ”λ§ 될 λ•Œ 4. forceUpdate κ°€ 싀행될 λ•Œ. 문제 원인 1. λΆ€λͺ¨λ‘œλΆ€ν„° 받은 editForm ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ setStateλ₯Ό ν•΄μ£ΌκΈ° λ•Œλ¬Έμ— λΆ€λͺ¨μ˜ stateκ°€ λ³€κ²½λ˜μ–΄ μžμ‹μ˜ μžμ‹ μ»΄ν¬λ„ŒνŠΈμΈ TagList 도 μž¬λ Œλ”λ§ 됨. 2. TagList μ»΄ν¬λ„ŒνŠΈμ˜ tagList state λŠ” μ΅œμ΄ˆμ— λ³€κ²½λ˜κ³  κ·Έλ‹€μŒ λ Œλ”λ§λΆ€ν„°λŠ” λ³€κ²½μœΌλ‘œ μΈμ§€λ˜μ§€ μ•Šμ•„ useEffect μ•ˆμ˜ editForm 이 μ‹€ν–‰λ˜μ§€ μ•ŠμŒ. 3. λ•Œλ¬Έμ— λΆ€λͺ¨ editForm ν•¨μˆ˜μ—” κ°€μž₯ μ²˜μŒμ—” μˆ˜μ •λœ μ •λ³΄λ‘œ λ‚˜μ˜€κ³  κ·Έ ν›„μ—” 계속 초기 지정 κ°’μœΌλ‘œ λ‚˜μ˜΄. 문제 ν•΄κ²° 1. editForm ν•¨μˆ˜κ°€ μ•„λ‹Œ ta..

    github pages 둜 λ°°ν¬μ‹œ react-router μ„€μ • feat. λ°°ν¬ν–ˆλŠ”λ° 흰 ν™”λ©΄λ§Œ λ‚˜μ˜¬ λ•Œ

    github pages 둜 λ°°ν¬μ‹œ react-router μ„€μ • feat. λ°°ν¬ν–ˆλŠ”λ° 흰 ν™”λ©΄λ§Œ λ‚˜μ˜¬ λ•Œ

    λ‘œμ»¬μ—μ„œλŠ” 잘 μ‹€ν–‰λ˜λ˜ ν”„λ‘œμ νŠΈκ°€ github pages 둜 배포 ν›„ ν•˜μ–€ ν™”λ©΄λ§Œ λ‚˜μ˜¨λ‹€λ©΄? 원인 μ•„λž˜ 곡식 λ¬Έμ„œλ₯Ό 보면 CRA μ›Ή, 앱은 기본적으둜 μ„œλ²„ λ£¨νŠΈμ—μ„œ ν˜ΈμŠ€νŒ… λœλ‹€κ³  κ°€μ •ν•˜μ—¬ λΉŒλ“œλ©λ‹ˆλ‹€. λ•Œλ¬Έμ— λΉŒλ“œλ₯Ό ν•˜κ²Œ 되면 ν”„λ‘œμ νŠΈλŠ” https://leeseul-moon.github.io/todo_list/ 에 μ‘΄μž¬ν•©λ‹ˆλ‹€. (todo_list λŠ” ν”„λ‘œμ νŠΈ 폴더) ν•˜μ§€λ§Œ λΌμš°ν„°λŠ” μ œκ°€ 에 μž‘μ„±ν•œ 것을 따라 https://leeseul-moon.github.io/ 둜 μ΄λ™μ‹œν‚΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ μœ„μΉ˜μ™€ λΌμš°ν„°κ°€ κ°€λ¦¬ν‚€λŠ” μœ„μΉ˜κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λΌμš°ν„°κ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•΄κ²° λΌμš°ν„°μ— κΈ°λ³Έ URL μ˜΅μ…˜μ„ μ£Όμ–΄ / κ°€ μ•„λ‹Œ /todo_list/ 둜 μ΄λ™μ‹œν‚΅λ‹ˆλ‹€. package.json 에 5번 쀄 heme..

    React.memo 써도 μ»΄ν¬λ„ŒνŠΈ 계속 λ Œλ”λ§ 됨... -> ν•΄κ²°!✌🏻 feat. useMemo, useCallback

    React.memo 써도 μ»΄ν¬λ„ŒνŠΈ 계속 λ Œλ”λ§ 됨... -> ν•΄κ²°!✌🏻 feat. useMemo, useCallback

    λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ μ•ˆ ν•˜κ³  μ‹Άλ‹€..! μ„œλ‘ μ΄ κΉλ‹ˆλ‹€. λ°”μ˜μ‹  뢄듀은 μ•„λž˜λ‘œ μ­‰μ­‰ λ‚΄λ €μ„œ 문제점, 원인은? ν•΄κ²°! 이 λΆ€λΆ„λ§Œ λ³΄μ„Έμš”! λ¦¬μ•‘νŠΈ 곡뢀 5일차에 μ΄μ œκΉŒμ§€ 배운 것을 μ‹€μŠ΅ν•˜κΈ° μœ„ν•΄ Habit Tracker λ₯Ό λ§Œλ“€μ—ˆλ‹€. μŠ΅κ΄€μ„ μΆ”κ°€ν•  수 있고 μ˜†μ— +, - λ²„νŠΌμœΌλ‘œ 카운트λ₯Ό μˆ˜μ •ν•  수 μžˆλ‹€. 맨 μœ„μ— Habit Tracker μ˜† μˆ«μžλŠ” μŠ΅κ΄€ 리슀트 쀑 체크가 된 κ²ƒλ“€μ˜ κ°―μˆ˜λ‹€. μ„Έ ν•­λͺ© λ‹€ 0이 μ•„λ‹ˆλ‹ˆ 숫자 3이 λ‚˜μ˜¨λ‹€. 초초초초 λ‹¨μˆœν•œ μŠ΅κ΄€ 좔적기(?) πŸ˜‰ 클래슀 μ»΄ν¬λ„ŒνŠΈλ‘œ ν•΄λΉ— 트레컀 λ§Œλ“œλŠ” 인강 2λ°°μ†μœΌλ‘œ 보고 ν˜Όμžμ„œ ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“€μ–΄ λ³Έ 거라 μ’€ ν—·κ°ˆλ Έλ‹€. 생각보닀 μ‹œκ°„μ΄ 더 κ±Έλ Έλ‹€. 근데 이거 λ§Œλ“œλŠ” 것보닀 React.memo κ³΅λΆ€ν•˜λŠ”λ° μ‹œκ°„ 더 κ±Έλ¦Ό γ…Ž λ¦¬μ•‘νŠΈ 컨셉은 λ‹¨μˆœν•˜λ‹€. ..

    2μ£Όμ°¨ μ‹€μŠ΅ 과제 - μ—λŸ¬λ‚˜λŠ” 이유 μ„€λͺ…

    let b = 1; function hi() { const a = 1; let b = 100; b++; console.log(a, b); } // console.log(a); // ReferenceError: a is not defined // μ „μ—­ μŠ€μ½”ν”„μ—μ„œ 둜컬 μŠ€μ½”ν”„μ˜ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•  수 μ—†μŠ΅λ‹ˆλ‹€. // h1() μ•ˆμ—μ„œ 좜λ ₯ν•˜λ©΄ 값이 잘 λ‚˜μ˜΅λ‹ˆλ‹€. console.log(b); // 1 hi(); // 1, 101 console.log(b); // 1 μŠ€μ½”ν”„μ˜ κ°œλ…μ„ μ•Œκ³  μžˆλ‹€λ©΄ μ‰½κ²Œ ν’€ 수 μžˆλŠ” μ‹€μŠ΅ 과제 μ˜€μŠ΅λ‹ˆλ‹€. μ°Έκ³  https://lazygay.tistory.com/17 JS μŠ€μ½”ν”„μ™€ μŠ€μ½”ν”„ 체인 μŠ€μ½”ν”„ Scope μŠ€μ½”ν”„λŠ” μ‹λ³„μž(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 이름) μ ‘κ·Ό κ·œμΉ™μ— λ”°λ₯Έ 유효 λ²”μœ„μž…λ‹ˆλ‹€. ..

    nodemon μ„€μΉ˜ 였λ₯˜ zsh : command not fount : nodemon

    nodemon 은 μ €μž₯κ³Ό λ™μ‹œμ— 슀크립트λ₯Ό μ½˜μ†”μ— μ‹€ν–‰μ‹œν‚¬ 수 μžˆλŠ” μ•„μ£Ό μœ μš©ν•œ νŒ¨ν‚€μ§€μž…λ‹ˆλ‹€! (참고둜 μ €λŠ” zsh 터미널을 μ‚¬μš©ν•©λ‹ˆλ‹€.) nodemon ν•˜κ³  npm install nodemon -g ν•˜κ³  nodemon ν•˜λ©΄ λ˜μ•Ό ν•˜λŠ”λ°, μ•„λž˜μ™€ 같은 였λ₯˜ λ°œμƒ. zsh : command not fount : nodemon ν•΄κ²°μ±… - 폴더λ₯Ό μƒμ„±ν•΄μ„œ μ „μ—­ μ„€μΉ˜ (global) μœ„μΉ˜λ₯Ό λ³€κ²½ μ•„λž˜λ₯Ό μˆœμ„œλŒ€λ‘œ 따라 μΉœλ‹€. mkdir ~/.npm-global npm config set prefix '~/.npm-global' vi ~/.zprofile μ΄λ ‡κ²Œ ν•˜λ©΄ vi νŽΈμ§‘κΈ°λ‘œ λ“€μ–΄κ°„λ‹€. i λ₯Ό 눌러 νŽΈμ§‘ν•˜κΈ° λͺ¨λ“œλ‘œ μ „ν™˜ export PATH=~/.npm-global/bin:$PATH νŽΈμ§‘λͺ¨λ“œμ—μ„œ μœ„μ™€ 같이 써..