Skip to content

Commit 7c3e618

Browse files
[autofix.ci] apply automated fixes
1 parent e8e464f commit 7c3e618

File tree

4 files changed

+34
-22
lines changed

4 files changed

+34
-22
lines changed

β€Žfundamentals/debug/pages/event.mdβ€Ž

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# 🎁 μ°Έμ—¬ 이벀트 1 (9/22 ~ 10/22)
2-
μžμ‹ μ˜ μΈμƒκΉŠμ—ˆλ˜ 디버깅 사둀λ₯Ό μ •λ¦¬ν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄μ„Έμš”! 디버깅 싀무 사둀λ₯Ό μ˜¬λ €μ£Όμ‹  λΆ„λ“€ **λͺ¨λ‘**μ—κ²Œ μƒν’ˆμ„ λ“œλ €μš”!
2+
3+
μžμ‹ μ˜ μΈμƒκΉŠμ—ˆλ˜ 디버깅 사둀λ₯Ό μ •λ¦¬ν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έλ³΄μ„Έμš”! 디버깅 싀무 사둀λ₯Ό μ˜¬λ €μ£Όμ‹  λΆ„λ“€ **λͺ¨λ‘**μ—κ²Œ μƒν’ˆμ„ λ“œλ €μš”!
34

45
μ•„λž˜μ˜ μˆœμ„œλŒ€λ‘œ μ°Έμ—¬ν•΄μ£Όμ„Έμš”
6+
57
1. 디버깅 싀무 사둀 > κΈ°μ—¬ν•˜κΈ° νƒ¬ν”Œλ¦Ώμ„ λ³΅μ‚¬ν•˜μ—¬ debug/experience폴더에 μƒˆλ‘œμš΄ 파일둜 생성
68
2. νƒ¬ν”Œλ¦Ώμ— 맞게 디버깅 사둀λ₯Ό μž‘μ„±
79
3. config.mts νŒŒμΌμ—μ„œ λͺ©λ‘ 쀑 디버깅 싀무 사둀 > items에 item μΆ”κ°€
@@ -11,14 +13,16 @@
1113

1214
<br/>
1315

14-
---
16+
---
1517

1618
<br/>
1719

1820
# 🎁 μ°Έμ—¬ 이벀트 2 (9/22 ~ 10/22)
21+
1922
디버깅 ν•  λ•Œ νž˜μ΄λ˜λŠ” λͺ…언을 μ•„λž˜ λŒ“κΈ€λ‘œ μ μ–΄μ£Όμ„Έμš”! κ·Έ 쀑 10뢄을 좔첨해 μƒν’ˆμ„ λ“œλ €μš”!
2023

2124
μ˜ˆμ‹œ)
25+
2226
```
2327
μ†Œν”„νŠΈμ›¨μ–΄ 문제 쀑 ν•΄κ²°ν•˜μ§€ λͺ»ν•˜λŠ” λ¬Έμ œλŠ” μ—†λ‹€.
2428
μ€‘κΊΎλ§ˆ!!
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
# {버그쒅λ₯˜} 디버깅 by.이름
2+
23
### λΆ€μ œ
4+
35
κ°„λž΅ν•œ μ†Œκ°œ
46

57
## 1. μ§„λ‹¨ν•˜κΈ°
8+
69
## 2. μž¬ν˜„ν•˜κΈ°
10+
711
## 3. μˆ˜μ •ν•˜κΈ°
12+
813
## 4. μž¬λ°œλ°©μ§€ν•˜κΈ°
914

1015
<br/>
1116

12-
----
17+
---
18+
1319
- 제λͺ©μ€ {버그쒅λ₯˜} 디버그 by.{이름} κ·œμΉ™μ„ μ§€μΌœμ£Όμ„Έμš” ^^
1420
- λΆ€μ œλŠ” μ„ νƒμž…λ‹ˆλ‹€.
15-
- 각 ν•­λͺ©μ— λΆ€ν•©ν•˜λŠ” λ‚΄μš©μ΄ μ—†λ‹€λ©΄ μŠ€ν‚΅ν•˜μ…”λ„ λ©λ‹ˆλ‹€!
21+
- 각 ν•­λͺ©μ— λΆ€ν•©ν•˜λŠ” λ‚΄μš©μ΄ μ—†λ‹€λ©΄ μŠ€ν‚΅ν•˜μ…”λ„ λ©λ‹ˆλ‹€!

β€Žfundamentals/debug/pages/experience/suspense_debug_by_hyungkyu.mdβ€Ž

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
# Suspense Error 디버깅 by.κΉ€ν˜•κ·œ
2-
### λΆ€μ œ: react-query μƒνƒœλŠ” μ–΄λ–»κ²Œ λŒμ•„κ°€λŠ”κ°€?
32

4-
이 μΈν„°λ·°λŠ” μ›Ήλ·° κ°„ tanstack-query μΊμ‹œ 동기화 도ꡬ인 broadcast query clientλ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” Suspense ν˜„μƒ 문제의 원인과 ν•΄κ²° 과정을 λ‹΄κ³  μžˆμ–΄μš”.
3+
### λΆ€μ œ: react-query μƒνƒœλŠ” μ–΄λ–»κ²Œ λŒμ•„κ°€λŠ”κ°€?
54

5+
이 μΈν„°λ·°λŠ” μ›Ήλ·° κ°„ tanstack-query μΊμ‹œ 동기화 도ꡬ인 broadcast query clientλ₯Ό μ‚¬μš©ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” Suspense ν˜„μƒ 문제의 원인과 ν•΄κ²° 과정을 λ‹΄κ³  μžˆμ–΄μš”.
66

77
## 1. μ§„λ‹¨ν•˜κΈ°
88

99
### Q1. 처음 λ§žλ”±λœ¨λ¦¬μ‹  μ—λŸ¬ ν˜„μƒκ³Ό μ—λŸ¬ 메세지에 λŒ€ν•΄ 짧게 μ†Œκ°œν•΄μ£Όμ‹€ 수 μžˆμ„κΉŒμš”?
10+
1011
λ¨Όμ € ν˜„μƒλΆ€ν„° κ°„λž΅νžˆ λ§μ”€λ“œλ¦¬μžλ©΄, `μ›Ήλ·°λ₯Ό 5λΆ„ 정도 μΌœλ†“κ³  μžˆλ‹€κ°€, 앱을 λ°±κ·ΈλΌμš΄λ“œ μƒνƒœλ‘œ λ‘μ—ˆλ‹€κ°€ λ‹€μ‹œ 앱을 ν‚€λ©΄ κ°‘μžκΈ° Suspenseμ—λŸ¬κ°€ λ°œμƒν•œλ‹€.` λŠ” ν˜„μƒμ΄μ—ˆμ–΄μš”.
1112

1213
![](../../images/interview/react-query/1.jpeg)
@@ -15,20 +16,19 @@
1516
μ—λŸ¬λ©”μ„Έμ§€λŠ” λ‹€μŒκ³Ό κ°™μ•˜λŠ”λ°μš”,
1617

1718
```
18-
A component suspended while responding to synchronous input.
19+
A component suspended while responding to synchronous input.
1920
This will cause the UI to be replaced with a loading indicator.
2021
To fix, updates that suspend should be wrapped with startTransition.
2122
```
2223

2324
이 μ—λŸ¬ λ©”μ„Έμ§€λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ `suspense`λ₯Ό μΌμœΌν‚¬λ•Œ λ‚˜νƒ€λ‚˜λŠ” μ—λŸ¬λ©”μ„Έμ§€μΈλ°, 보톡 ν† μŠ€ ν”„λ‘ νŠΈμ—”λ“œ ν™˜κ²½μ—μ„œ `suspense`κ°€ μΌμ–΄λ‚¬λ‹€λŠ” 것은 κ³§ "μ€€λΉ„λ˜μ§€ μ•Šμ€ 쿼리가 있음"을 μ˜λ―Έν•΄μš”. μ»΄ν¬λ„ŒνŠΈ λ Œλ” μ‹œμ μ— μ»΄ν¬λ„ŒνŠΈμ—μ„œ μΊμ‹œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 쿼리λ₯Ό μ‚¬μš©ν•  λ•Œ μΌμ–΄λ‚˜λŠ” μ—λŸ¬μ—μš”.
2425

25-
2626
### Q2. 문제의 증상과 μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 처음 μ ‘ν–ˆμ„ λ•Œ μ–΄λ–€ 생각을 ν•˜μ…¨λ‚˜μš”?
2727

28-
μ—λŸ¬ 메세지와 ν˜„μƒμ΄ 맀칭이 잘 μ•ˆλμ–΄μš”. μ € μ‹œμ κΉŒμ§€λ§Œ 해도 react-queryμ—μ„œ μΊμ‹œλ₯Ό κ΄€λ¦¬ν•˜λŠ” μžμ„Έν•œ λ™μž‘μ— λŒ€ν•΄μ„œ μ•Œκ³  μžˆμ§„ λͺ»ν–ˆμ–΄μš”.
28+
μ—λŸ¬ 메세지와 ν˜„μƒμ΄ 맀칭이 잘 μ•ˆλμ–΄μš”. μ € μ‹œμ κΉŒμ§€λ§Œ 해도 react-queryμ—μ„œ μΊμ‹œλ₯Ό κ΄€λ¦¬ν•˜λŠ” μžμ„Έν•œ λ™μž‘μ— λŒ€ν•΄μ„œ μ•Œκ³  μžˆμ§„ λͺ»ν–ˆμ–΄μš”.
2929
react-query μœ μ €λ‘œμ„œ 생각해봀을 λ•Œ 잘 μ‚¬μš©λ˜κ³  있던 νŽ˜μ΄μ§€μ— focusκ°€ λ‹€μ‹œ 된 μ‹œμ μ— 기쑴에 μ‚¬μš©ν•˜λ˜ `cache`κ°€ 제거되고 `suspense`κ°€ λ°œμƒν•˜λŠ” 것이 μ˜λ„λœ λ™μž‘μ΄ μ•„λ‹ˆλΌκ³  μƒκ°ν—€μ–΄μš”. κ·Έλž˜μ„œ 이 ν˜„μƒμ΄ 말이 μ•ˆλœλ‹€κ³  μƒκ°ν–ˆμ–΄μš”.
3030

31-
이후에 μ°Ύμ•„λ³΄λ‹ˆ ν˜„μž¬ λžœλ”λ§ 되고 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ—μ„œ 쿼리λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄, ν•΄λ‹Ή μΏΌλ¦¬λŠ” `staleTime`, `cacheTime`이 μ§€λ‚¬λ‹€κ³ ν•΄μ„œ 날라가지 μ•Šλ”λΌκ΅¬μš”.
31+
이후에 μ°Ύμ•„λ³΄λ‹ˆ ν˜„μž¬ λžœλ”λ§ 되고 μžˆλŠ” μ»΄ν¬λ„ŒνŠΈλ“€μ—μ„œ 쿼리λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€λ©΄, ν•΄λ‹Ή μΏΌλ¦¬λŠ” `staleTime`, `cacheTime`이 μ§€λ‚¬λ‹€κ³ ν•΄μ„œ 날라가지 μ•Šλ”λΌκ΅¬μš”.
3232

3333
`suspense`κ°€ λ°œμƒν•œ κ²ƒμœΌλ‘œ 보아 μΊμ‹œ κ΄€λ ¨λœ λ¬Έμ œλŠ” λ§žλŠ” 것 κ°™κ³ , μ—λŸ¬κ°€ μž¬ν˜„λ˜λŠ” 5λΆ„μ΄λΌλŠ” μ‹œκ°„μ΄ `cacheTime`(gcTime)κ³Ό 연관이 있긴 ν•œ 것 같은데, μ •μƒμ μœΌλ‘œ νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš© 쀑인 쿼리가 μ œκ±°λ˜μ§„ μ•Šμ•˜μ„κ±°κ³ , λ‹€λ₯Έ μ˜μ‘΄μ„±μ— μ˜ν•œ μ‚¬μ΄λ“œ μ΄νŒ©νŠΈκ°€ μΊμ‹œλ₯Ό 날렸을 것이라고 μ˜μ‹¬ν•˜κΈ° μ‹œμž‘ν–ˆμ–΄μš”.
3434

@@ -44,7 +44,7 @@ react-query μœ μ €λ‘œμ„œ 생각해봀을 λ•Œ 잘 μ‚¬μš©λ˜κ³  있던 νŽ˜μ΄μ§€
4444

4545
κ·Έλž˜μ„œ 닀쀑 μ›Ήλ·° ν™˜κ²½μ„ μœ„ν•΄ λ”°λ‘œ μ„€μ •λœ 것이 μžˆλŠ”μ§€ μ‚΄νŽ΄λ³΄μ•˜κ³ , `broadcast query client`κ°€ μ‚¬μš©λ˜κ³  μžˆλ‹€λŠ” 사싀을 μ•Œκ²Œλ˜μ—ˆμ–΄μš”. `broadcast query client`λŠ” μ—¬λŸ¬ νƒ­(λ˜λŠ” μœˆλ„μš°)간에 쿼리 μΊμ‹œλ₯Ό `동기화(broadcast)`ν•˜κΈ° μœ„ν•œ μœ ν‹Έ ν•¨μˆ˜μ˜ˆμš”. 쿼리 μΊμ‹œλ₯Ό 문제의 μ›μΈμœΌλ‘œ μ˜μ‹¬ν•˜κ³  μžˆλ˜ν„°λΌ μ΄λ•ŒλΆ€ν„°λŠ” κ°•λ ₯ν•˜κ²Œ `broadcast query client`λ₯Ό μ˜μ‹¬ν•˜κ²Œ λ˜μ—ˆμ–΄μš”.
4646

47-
### 진단과 λ™μ‹œμ— μž¬ν˜„μ— μ„±κ³΅ν•˜μ‹ κ±°κ΅°μš”!
47+
### 진단과 λ™μ‹œμ— μž¬ν˜„μ— μ„±κ³΅ν•˜μ‹ κ±°κ΅°μš”!
4848

4949
## 2. μž¬ν˜„ν•˜κΈ°
5050

@@ -58,6 +58,7 @@ react-query μœ μ €λ‘œμ„œ 생각해봀을 λ•Œ 잘 μ‚¬μš©λ˜κ³  있던 νŽ˜μ΄μ§€
5858
5. 앱을 λ°±κ·Έμš΄λ“œλ‘œ 보낸닀
5959
6. λ‹€μ‹œ 앱을 μΌ λ‹€. (νŽ˜μ΄μ§€Bκ°€ μΌœμ§„λ‹€)
6060
```
61+
6162
μ΄λ ‡κ²Œ μž…λ‹ˆλ‹€.
6263

6364
![](../../images/interview/react-query/3.jpeg)
@@ -66,10 +67,11 @@ react-query μœ μ €λ‘œμ„œ 생각해봀을 λ•Œ 잘 μ‚¬μš©λ˜κ³  있던 νŽ˜μ΄μ§€
6667

6768
일단, λ‘œμ»¬μ—μ„œ μž¬ν˜„λ˜λŠ”κ²Œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” κ°€μž₯ λΉ λ₯Έ 길이라고 μƒκ°ν•΄μ„œ λ‘œμ»¬μ—μ„œ μž¬ν˜„μ„ μ‹œλ„ν–ˆμ–΄μš”. μž¬ν˜„μ„ μœ„ν•΄ λ‘œμ»¬μ—μ„œ query client dev tool을 μ„€μΉ˜ν–ˆμ–΄μš”. 둜컬 ν˜ΈμŠ€νŠΈμ—μ„œ μ„œλΉ„μŠ€λ₯Ό λ„μš°κ³ , νŽ˜μ΄μ§€Aμ—μ„œ νŽ˜μ΄μ§€Bλ₯Ό μ—΄μ–΄κ°€λ©° 쿼리 μƒνƒœκ°€ μ–΄λ–»κ²Œ λ³€ν•˜λŠ”μ§€ ν™•μΈν–ˆμ–΄μš”.
6869

69-
행동 μ•‘μ…˜μ„ μͺΌκ°œμ„œ ν™•μΈν•˜κΈ° μœ„ν•΄ 디버거λ₯Ό κ±Έμ–΄μ„œ 각 μ•‘μ…˜μ—μ„œ μ–΄λ–€ 일이 λ°œμƒν•˜λŠ”μ§€ ν™•μΈν–ˆμ–΄μš”. 마우슀λ₯Ό ν΄λ¦­ν•΄μ„œ μœˆλ„μš°μ— ν¬μ»€μŠ€ν•  λ•Œ 쿼리 μƒνƒœκ°€ μ–΄λ–»κ²Œ λ³€κ²½λ˜λŠ”μ§€
70+
행동 μ•‘μ…˜μ„ μͺΌκ°œμ„œ ν™•μΈν•˜κΈ° μœ„ν•΄ 디버거λ₯Ό κ±Έμ–΄μ„œ 각 μ•‘μ…˜μ—μ„œ μ–΄λ–€ 일이 λ°œμƒν•˜λŠ”μ§€ ν™•μΈν–ˆμ–΄μš”. 마우슀λ₯Ό ν΄λ¦­ν•΄μ„œ μœˆλ„μš°μ— ν¬μ»€μŠ€ν•  λ•Œ 쿼리 μƒνƒœκ°€ μ–΄λ–»κ²Œ λ³€κ²½λ˜λŠ”μ§€
7071
λ“±μ΄μš”.
7172

7273
### Q3. 쿼리의 μƒνƒœκ°’μ—μ„œ 원인을 μ°ΎμœΌμ…¨λ‚˜μš”?
74+
7375
결둠은 μΊμ‹œ μƒνƒœμ™€ 관련이 μžˆμ—ˆμ–΄μš”. μΊμ‹œ μƒνƒœμ—λŠ” μ•„λž˜μ˜ μƒνƒœλ“€μ΄ μžˆμ–΄μš”.
7476
|μƒνƒœ |의미|
7577
|---|--|
@@ -79,8 +81,9 @@ react-query μœ μ €λ‘œμ„œ 생각해봀을 λ•Œ 잘 μ‚¬μš©λ˜κ³  있던 νŽ˜μ΄μ§€
7981
|inactive| μ»΄ν¬λ„ŒνŠΈμ—μ„œ 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šμ§€λ§Œ 아직 μΊμ‹œλŠ” λ‚¨μ•„μžˆμ–΄μš” (cacheTime 이후 μ‚­μ œλ¨)|
8082

8183
μ—¬κΈ°μ„œ `staleTime`κ³Ό `cacheTime`은 μ™„μ „νžˆ λ³„λ„μ˜ κ°œλ…μ΄μ—μš”.
84+
8285
```
83-
μΊμ‹œ μ‚­μ œ 쑰건:
86+
μΊμ‹œ μ‚­μ œ 쑰건:
8487
- `inactive` μƒνƒœμΌ λ•Œλ§Œ `cacheTime` κ²½κ³Ό ν›„ μ‚­μ œ κ°€λŠ₯
8588
- μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ°Έμ‘° 쀑이면 μ ˆλŒ€ μžλ™ μ‚­μ œλ˜μ§€ μ•ŠμŒ
8689
fresh μƒνƒœλΌλ„ μ‚¬μš© 쀑인 μ»΄ν¬λ„ŒνŠΈκ°€ μ—†μœΌλ©΄ `inactive` μƒνƒœκ°€ 될 수 있음.
@@ -91,12 +94,12 @@ fresh μƒνƒœλΌλ„ μ‚¬μš© 쀑인 μ»΄ν¬λ„ŒνŠΈκ°€ μ—†μœΌλ©΄ `inactive` μƒνƒœκ°€
9194

9295
![](../../images/interview/react-query/4.jpeg)
9396

94-
9597
### Q4. μž¬ν˜„μ— μ‹ κ²½μ“°μ‹  뢀뢄이 μžˆλ‚˜μš”?
96-
μΊμ‹œ κ΄€λ ¨λœ 문제라고 μƒκ°ν•΄μ„œ μΊμ‹œ νƒ€μž„μ„ 1초둜 μ„€μ •ν•˜κ³  `inactive` 이후 μΊμ‹œκ°€ 제거된 상황을 λΉ λ₯΄κ²Œ μž¬ν˜„ν–ˆμ–΄μš”.
9798

99+
μΊμ‹œ κ΄€λ ¨λœ 문제라고 μƒκ°ν•΄μ„œ μΊμ‹œ νƒ€μž„μ„ 1초둜 μ„€μ •ν•˜κ³  `inactive` 이후 μΊμ‹œκ°€ 제거된 상황을 λΉ λ₯΄κ²Œ μž¬ν˜„ν–ˆμ–΄μš”.
98100

99101
### Q5. μž¬ν˜„ 쀑 κ°€μž₯ μ–΄λ €μ› λ˜ μˆœκ°„μ΄ μžˆμ—ˆλ‚˜μš”?
102+
100103
κ²°κ΅­, μ»΄ν¬λ„ŒνŠΈμ—μ„œ λ¦¬λžœλ”λ§μ΄ 트리거되며 μ—λŸ¬κ°€ λ°œμƒν•˜λŠ” 것일텐데, 이 λ¦¬λžœλ”λ§μ΄ μ–Έμ œ 트리거 λ˜λŠ”μ§€ μ•Œμ•„λ‚΄λŠ”λ° μ—¬λŸ¬ 과정이 ν•„μš”ν—€μ–΄μš”.
101104

102105
μ²˜μŒμ—λŠ” λ‹¨μˆœνžˆ μΊμ‹œκ°€ μ‚¬λΌμ§€λŠ” μˆœκ°„μΌ 것이라 μƒκ°ν–ˆμ–΄μš”. κ·Έλž˜μ„œ query client dev toolμ—μ„œ 직접 μΊμ‹œλ₯Ό μ‚­μ œν•΄μ„œ μž¬ν˜„ν•΄λ³΄κΈ°λ„ ν–ˆμ–΄μš”. ν•˜μ§€λ§Œ μž¬ν˜„μ΄ μ•ˆλ˜λ”λΌκ³ μš”.
@@ -110,11 +113,10 @@ fresh μƒνƒœλΌλ„ μ‚¬μš© 쀑인 μ»΄ν¬λ„ŒνŠΈκ°€ μ—†μœΌλ©΄ `inactive` μƒνƒœκ°€
110113
- query μƒνƒœκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•  경우
111114
```
112115

113-
query μƒνƒœκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•  λ•ŒλΌλŠ” 쑰건이 리패치 쑰건에 μžˆμ—ˆμ–΄μš”. 쿼리 μƒνƒœλ₯Ό ν•˜λ‚˜λ§Œ 두고 ν…ŒμŠ€νŠΈλ₯Ό ν–ˆμ—ˆλŠ”λ°, κ·Έ μΊμ‹œλ₯Ό μ§€μ› κΈ° λ•Œλ¬Έμ— μ‘΄μž¬ν•˜λŠ” μΊμ‹œκ°€ ν•˜λ‚˜λ„ 남지 μ•Šκ²Œ λ˜μ–΄ λ¦¬νŒ¨μΉ˜κ°€ μ•ˆμΌμ–΄λ‚˜κ³ , λ¦¬λžœλ”κ°€ μ•ˆμΌμ–΄λ‚¬λ˜ κ±°μ˜€μ–΄μš”.
116+
query μƒνƒœκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•  λ•ŒλΌλŠ” 쑰건이 리패치 쑰건에 μžˆμ—ˆμ–΄μš”. 쿼리 μƒνƒœλ₯Ό ν•˜λ‚˜λ§Œ 두고 ν…ŒμŠ€νŠΈλ₯Ό ν–ˆμ—ˆλŠ”λ°, κ·Έ μΊμ‹œλ₯Ό μ§€μ› κΈ° λ•Œλ¬Έμ— μ‘΄μž¬ν•˜λŠ” μΊμ‹œκ°€ ν•˜λ‚˜λ„ 남지 μ•Šκ²Œ λ˜μ–΄ λ¦¬νŒ¨μΉ˜κ°€ μ•ˆμΌμ–΄λ‚˜κ³ , λ¦¬λžœλ”κ°€ μ•ˆμΌμ–΄λ‚¬λ˜ κ±°μ˜€μ–΄μš”.
114117

115118
ν…ŒμŠ€νŠΈ λ‹Ήμ‹œμ—” λΆ„λͺ…νžˆ 'query option이 refetchOnWindowFocusκ°€ μ„€μ •λ˜μ–΄μžˆλŠ”λ°, μ™œ λ¦¬νŒ¨μΉ˜κ°€ μ•ˆμΌμ–΄λ‚˜λŠ”κ±°μ§€?'ν•˜λ©° μ• λ¨Ήμ—ˆλ˜ 기얡이 λ‚©λ‹ˆλ‹€.
116119

117-
118120
## 3. μˆ˜μ •ν•˜κΈ°
119121

120122
### Q1. 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ κ°€μž₯ λ¨Όμ € κ³ λ €ν•œ μˆ˜μ • λ°©ν–₯은 λ¬΄μ—‡μ΄μ—ˆκ³ , 그것을 μ„ νƒν•œ μ΄μœ λŠ” λ¬΄μ—‡μ΄μ—ˆλ‚˜μš”?
@@ -124,16 +126,17 @@ query μƒνƒœκ°€ ν•˜λ‚˜λΌλ„ μ‘΄μž¬ν•  λ•ŒλΌλŠ” 쑰건이 리패치 쑰건에
124126
'`broadcast query client experimental`의 μ½”λ“œλ₯Ό μˆ˜μ •ν•œ 버전을 νŒ¨μΉ˜ν•΄μ„œ μ‚¬μš©ν•˜λ©΄ λ˜κ² λ‹€'λŠ” 생각을 ν•˜κ³  μ½”λ“œλ₯Ό ν™•μΈν•˜λŸ¬ 라이브러리 μ½”λ“œλ₯Ό 찾아보닀가 ν•΄λ‹Ή 버그가 μˆ˜μ •λ˜μ—ˆλ‹€λŠ” 사싀을 λ°œκ²¬ν–ˆμ–΄μš”. λ‹€λ₯Έ μ›Ήλ·°μ—μ„œ μ „νŒŒλœ 쿼리 제거 broadcast λ©”μ„Έμ§€κ°€ ν˜„μž¬ μ›Ήλ·°μ—μ„œ μ‚¬μš©λ˜κ³  μžˆλŠ” 쿼리라면 μ‚­μ œλ˜μ§€ μ•Šλ„λ‘ λ³΄μ™„ν•΄μ£ΌλŠ” λ³€κ²½μ΄μ—ˆμ–΄μš”. λ”°λΌμ„œ ν•΄λ‹Ή λ²„μ „μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λ©΄ λ˜κ² λ‹€κ³  μƒκ°ν–ˆμ–΄μš”.
125127
그리고 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. πŸ‘πŸΌ
126128

127-
128129
## μΆ”κ°€μ§ˆλ¬Έ
130+
129131
### Q1. 디버깅 쀑 ν¬κΈ°ν•˜κ³  싢은 μˆœκ°„λ„ μžˆμ„ 것 κ°™μ•„μš”. μ–΄λ–€ 생각이 λκΉŒμ§€ 디버깅을 ν•˜κ²Œ ν•˜λŠ”μ§€ κΆκΈˆν•΄μš”.
130-
처음 μ—λŸ¬ λ©”μ„Έμ§€λ‚˜ ν˜„μƒμ„ 봀을 λ•Œ `useQuery`, `cache-time` 사이 μ–΄λ”˜κ°€μ— μ‘΄μž¬ν•˜λŠ” 이슈일 것 κ°™μ•„ 크게 μ–΄λ ΅μ§€ μ•Šμ€ 이슈일 것이라 μƒκ°ν–ˆμ–΄μš”. 또 κ·Έλƒ₯ 순수 μž¬λ―Έμ™€ ꢁ금증으둜 파보고 μ‹Άμ—ˆμ–΄μš”. 그리고 이 문제λ₯Ό ν•΄κ²°ν•˜λ©΄ λŸ¬λ‹μ΄ 생길 것 κ°™μ•˜κ±°λ“ μš”. β€œκ²°κ΅­μ— 해결은 될 것이닀” λΌλŠ” 믿음이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€ ^-^
131132

133+
처음 μ—λŸ¬ λ©”μ„Έμ§€λ‚˜ ν˜„μƒμ„ 봀을 λ•Œ `useQuery`, `cache-time` 사이 μ–΄λ”˜κ°€μ— μ‘΄μž¬ν•˜λŠ” 이슈일 것 κ°™μ•„ 크게 μ–΄λ ΅μ§€ μ•Šμ€ 이슈일 것이라 μƒκ°ν–ˆμ–΄μš”. 또 κ·Έλƒ₯ 순수 μž¬λ―Έμ™€ ꢁ금증으둜 파보고 μ‹Άμ—ˆμ–΄μš”. 그리고 이 문제λ₯Ό ν•΄κ²°ν•˜λ©΄ λŸ¬λ‹μ΄ 생길 것 κ°™μ•˜κ±°λ“ μš”. β€œκ²°κ΅­μ— 해결은 될 것이닀” λΌλŠ” 믿음이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€ ^-^
132134

133135
### Q2. 디버깅 κΏ€νŒμ΄ μžˆλ‹€λ©΄?
136+
134137
둜컬과 같은 μ ‘κ·Όν•˜κΈ° μ‰¬μš΄ ν™˜κ²½μ—μ„œ μ΅œλŒ€ν•œ λΉ„μŠ·ν•œ μž¬ν˜„ 쑰건을 λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€. `μž¬ν˜„μ— μ„±κ³΅ν•œλ‹€λŠ” 것 === 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 것`이라고 μƒκ°ν•΄μš”.
135138
κ·Έλž˜μ„œ μž¬ν˜„ 쑰건을 λ§Œλ“œλŠ” 것 μžμ²΄λ„ μ—¬λŸ¬ 과정을 κ±°μ³μ„œ μž¬ν˜„μ— μ„±κ³΅ν•΄μš”. λŒ€μΆ© λΉ„μŠ·ν•œ μž¬ν˜„μ‘°κ±΄μ„ λ§Œλ“œλŠ” 것은 였히렀 디버깅과 λ©€μ–΄μ§ˆ 수 μžˆμ–΄μš”. ν™•μ‹€ν•œ μž¬ν˜„μ‘°κ±΄μ„ λ§Œλ“œλŠ”λ°μ—λ„ μ‹œκ°„μ„ 많이 νˆ¬μžν•˜λŠ” 것 κ°™μ•„μš”.
136139

137140
첫째둜, μ–΄λ–»κ²Œ ν•˜λ©΄ μ‚¬μš©μž ν™˜κ²½κ³Ό κ°€μž₯ λ˜‘κ°™μ€ 둜컬 μž¬ν˜„ ν™˜κ²½μ„ λ§Œλ“€ 수 μžˆμ„κΉŒμ— μ§‘μ€‘ν•΄μš”. 에λ₯Όλ“€μ–΄, `μƒˆλ‘œμš΄ μ›Ήλ·°λ₯Ό μ—¬λŠ”κ²ƒ === μƒˆλ‘œμš΄ localhost:3000λ₯Ό λ„μš°λŠ”κ²ƒ`κ³Ό 같이, 정말 기본이고 λ‹¨μˆœν•œ λ‚΄μš©λΆ€ν„° μ΅œλŒ€ν•œ 같은 ν™˜κ²½μ„ λ§Œλ“€λ©° μž¬ν˜„ν•΄λ €κ³  ν•΄μš”.
138141

139-
λ‘˜μ§Έλ‘œλŠ”, μž¬ν˜„μ€‘κ°„ κ³Όμ •μ—μ„œλ„ μž¬ν˜„μ΄ μ•ˆλ˜λŠ” 이유λ₯Ό κ³΅λΆ€ν•˜λŠ” νŽΈμ΄μ—μš”. 예λ₯Όλ“€μ–΄, "hydration λ¬Έμ œμΈκ°€? 사내 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ λ­”κ°€ νŠΉλ³„ν•˜κ²Œ ν•˜λŠ”κ²Œ μžˆλ‚˜?" 의문이 λ“œλŠ” 지점이 생기면 μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄μ„œ 가섀을 κ²€μ¦ν•΄λ³΄λŠ” 과정을 ν†΅ν•΄μ„œ 해결방법에 μ’€ 더 κ°€κΉŒμ›Œμ§€λŠ” 것 κ°™μ•„μš”.
142+
λ‘˜μ§Έλ‘œλŠ”, μž¬ν˜„μ€‘κ°„ κ³Όμ •μ—μ„œλ„ μž¬ν˜„μ΄ μ•ˆλ˜λŠ” 이유λ₯Ό κ³΅λΆ€ν•˜λŠ” νŽΈμ΄μ—μš”. 예λ₯Όλ“€μ–΄, "hydration λ¬Έμ œμΈκ°€? 사내 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ λ­”κ°€ νŠΉλ³„ν•˜κ²Œ ν•˜λŠ”κ²Œ μžˆλ‚˜?" 의문이 λ“œλŠ” 지점이 생기면 μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄μ„œ 가섀을 κ²€μ¦ν•΄λ³΄λŠ” 과정을 ν†΅ν•΄μ„œ 해결방법에 μ’€ 더 κ°€κΉŒμ›Œμ§€λŠ” 것 κ°™μ•„μš”.

β€Žfundamentals/debug/pages/introduce.mdβ€Ž

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,17 @@ comments: false
33
---
44

55
# λμ—†λŠ” λ²„κ·ΈλŠ” μ—†λ‹€
6+
67
디버깅은 λ•Œλ‘œλŠ” 끝이 보이지 μ•ŠλŠ” κΈ΄ 터널을 κ±·λŠ” κ²ƒμ²˜λŸΌ μ™Έλ‘­κ³  μ§€μΉ˜κ²Œ 느껴질 수 μžˆμ–΄μš”. ν•˜μ§€λ§Œ μ—¬λŸ¬λΆ„μ΄ λ§ˆμ£Όν•˜λŠ” 어렀움은 κ²°μ½” 혼자 κ²ͺλŠ” 것이 μ•„λ‹ˆμ—μš”. μˆ˜λ§Žμ€ κ°œλ°œμžλ“€μ΄ 같은 벽에 λΆ€λ”ͺ히고, 같은 μ’Œμ ˆμ„ κ²ͺμœΌλ©΄μ„œλ„ κ²°κ΅­ 해결책을 μ°Ύμ•„μ™”μ–΄μš”.
78

89
μ†Œν”„νŠΈμ›¨μ–΄ λ¬Έμ œμ— ν’€ 수 μ—†λŠ” λ¬Έμ œλŠ” μ—†μ–΄μš”. μ§€κΈˆ λ‹Ήμž₯은 닡이 보이지 μ•Šμ•„λ„, ν•œ κ±ΈμŒμ”© μ°¨κ·Όμ°¨κ·Ό μ‹œλ„ν•˜λ‹€ 보면 λ°˜λ“œμ‹œ 길이 μ—΄λ €μš”. μ€‘μš”ν•œ 건 ν¬κΈ°ν•˜μ§€ μ•ŠλŠ” λ§ˆμŒμ΄μ—μš”. λ¬Έμ œμ™€ λ§ˆμ£Όν•˜λŠ” κ³Όμ •μ—μ„œ μ—¬λŸ¬λΆ„μ˜ μ‹€λ ₯은 더 단단해지고, κ°œλ°œμžλ‘œμ„œμ˜ μžμ‹ κ°μ€ ν•œμΈ΅ 더 κΉŠμ–΄μ§ˆ κ±°μ—μš”.
910

10-
1111
# μ‹œμž‘ν•˜κΈ°
1212

1313
**버그λ₯Ό μ–΄λ–»κ²Œ λ‹€λ£¨λŠλƒμ— 따라 μ½”λ“œμ˜ ν’ˆμ§ˆκ³Ό 개발자의 μ„±μž₯ μ†λ„λŠ” λ‹¬λΌμ Έμš”.** `Frontend Debugging Guide`λŠ” λ””λ²„κΉ…μ˜ λ³Έμ§ˆμ— μ§‘μ€‘ν•΄μš”.
1414

1515
버그λ₯Ό κ³ μΉ˜λŠ” κ³Όμ •μ—μ„œ λ°©ν–₯을 μžƒμ§€ μ•Šλ„λ‘, 문제의 원인을 λΆ„μ„ν•˜κ³  효과적으둜 ν•΄κ²°ν•˜λŠ” 방법을 μ•ˆλ‚΄ν•΄μš”. 문제λ₯Ό λ‹¨μˆœνžˆ "ν•΄κ²°"ν•˜λŠ” 것을 λ„˜μ–΄μ„œ, "λ‹€μ‹œ λ°œμƒν•˜μ§€ μ•Šκ²Œ λ§Œλ“œλŠ” κ³Όμ •"κΉŒμ§€ ν•¨κ»˜ λ‹€λ€„μš”. 디버깅을 더 μž˜ν•˜κ³  싢은 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžμ—κ²Œ μ‹€μ§ˆμ μΈ κΈ°μ€€κ³Ό ꡬ체적인 사둀λ₯Ό μ œκ³΅ν•΄μš”.
1616

17-
1817
## 이런 λΆ„λ“€μ—κ²Œ μΆ”μ²œν•΄μš”
1918

2019
- 🧩 **λ²„κ·Έμ˜ 원인이 λ§‰λ§‰ν•œ** μƒν™©μ—μ„œ μ–΄λ””μ„œλΆ€ν„° μ‚΄νŽ΄λ΄μ•Ό ν• μ§€ κ³ λ―Ό 쀑인 개발자

0 commit comments

Comments
Β (0)