Skip to content

Commit cf26a40

Browse files
authored
Fix: invalidate queries (#21)
* fix: useMutaion -> useMutation μ˜€νƒ€ μˆ˜μ • * fix: v4 λ¬Έμ„œ useMutaion -> useMutation μ˜€νƒ€ μˆ˜μ • * fix: Optimistic Update μ˜ˆμ œμ—μ„œ getQueryData queryKeyλ₯Ό λ°°μ—΄λ‘œ μˆ˜μ • * fix: invalidateQueries λ‚΄μš© μˆ˜μ • * fix: singleQuote doubleQuote둜 톡일 * fix: invalidateQueries μ˜ˆμ œμ½”λ“œ queryKey λ³€κ²½ * fix: 쿼리 μ—¬λŸ¬κ°œ λ¬΄νš¨ν™” κ΄€λ ¨ 문ꡬ μˆ˜μ • * fix: v4 λ¬Έμ„œμ—μ„œ useQuery ν›… ν˜•νƒœ μΌκ΄€μ„±μžˆκ²Œ λ³€κ²½
1 parent a61a1a0 commit cf26a40

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

β€ŽREADME.mdβ€Ž

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,7 +1047,7 @@ const useAddSuperHeroData = () => {
10471047
const queryClient = useQueryClient();
10481048
return useMutation(addSuperHero, {
10491049
onSuccess(data) {
1050-
queryClient.invalidateQueries(["super-heroes"]); // 이 key에 ν•΄λ‹Ήν•˜λŠ” 쿼리가 λ¬΄νš¨ν™”!
1050+
queryClient.invalidateQueries({ queryKey: ["super-heroes"] }); // 이 key에 ν•΄λ‹Ήν•˜λŠ” 쿼리가 λ¬΄νš¨ν™”!
10511051
console.log(data);
10521052
},
10531053
onError(err) {
@@ -1057,10 +1057,20 @@ const useAddSuperHeroData = () => {
10571057
};
10581058
```
10591059
1060-
- λ§Œμ•½ λ¬΄νš¨ν™” ν•˜λ €λŠ” ν‚€κ°€ μ—¬λŸ¬ 개라면 μ•„λž˜ μ˜ˆμ œμ™€ 같이 λ‹€μŒκ³Ό 같이 λ°°μ—΄λ‘œ 보내주면 λœλ‹€.
1060+
- 참고둜, queryKey에 `["super-heroes"]`을 λ„˜κ²¨μ£Όλ©΄ queryKey에 "super-heroes"λ₯Ό ν¬ν•¨ν•˜λŠ” λͺ¨λ“  쿼리가 λ¬΄νš¨ν™”λœλ‹€.
10611061
10621062
```tsx
1063-
queryClient.invalidateQueries(["super-heroes", "posts", "comment"]);
1063+
queryClient.invalidateQueries({ queryKey: ["super-heroes"] });
1064+
1065+
// μ•„λž˜ queryλ“€ λͺ¨λ‘ λ¬΄νš¨ν™” λœλ‹€.
1066+
const query = useQuery({
1067+
queryKey: ["super-heroes", "superman"],
1068+
queryFn: fetchSuperHero,
1069+
});
1070+
const query = useQuery({
1071+
queryKey: ["super-heroes", { id: 1 }],
1072+
queryFn: fetchSuperHero,
1073+
});
10641074
```
10651075
10661076
- μœ„μ— `enabled/refetch`μ—μ„œλ„ μ–ΈκΈ‰ν–ˆμ§€λ§Œ `enabled: false` μ˜΅μ…˜μ„ μ£Όλ©΄`queryClient`κ°€ 쿼리λ₯Ό λ‹€μ‹œ κ°€μ Έμ˜€λŠ” 방법 쀑 `invalidateQueries`와 `refetchQueries`λ₯Ό λ¬΄μ‹œν•œλ‹€.
@@ -1115,7 +1125,7 @@ const useAddSuperHeroData = () => {
11151125
await queryClient.cancelQueries(["super-heroes"]);
11161126

11171127
// 이전 κ°’
1118-
const previousHeroData = queryClient.getQueryData("super-heroes");
1128+
const previousHeroData = queryClient.getQueryData(["super-heroes"]);
11191129

11201130
// μƒˆλ‘œμš΄ κ°’μœΌλ‘œ 낙관적 μ—…λ°μ΄νŠΈ μ§„ν–‰
11211131
queryClient.setQueryData(["super-heroes"], (oldData: any) => {
@@ -1425,16 +1435,16 @@ const { data } = useQuery<
14251435

14261436
useMutation도 useQuery와 λ™μΌν•˜κ²Œ ν˜„μž¬ 4개이며, λ‹€μŒκ³Ό κ°™λ‹€.
14271437

1428-
1. TData: useMutaion에 λ„˜κ²¨μ€€ mutation function의 `μ‹€ν–‰ κ²°κ³Ό`의 νƒ€μž…μ„ μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
1438+
1. TData: useMutation에 λ„˜κ²¨μ€€ mutation function의 `μ‹€ν–‰ κ²°κ³Ό`의 νƒ€μž…μ„ μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14291439
- data의 νƒ€μž…κ³Ό onSuccess(1번째 인자)의 인자의 νƒ€μž…μœΌλ‘œ ν™œμš©λœλ‹€.
1430-
2. TError: useMutaion에 λ„˜κ²¨μ€€ mutation function의 `error` ν˜•μ‹μ„ μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
1440+
2. TError: useMutation에 λ„˜κ²¨μ€€ mutation function의 `error` ν˜•μ‹μ„ μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14311441
3. TVariables: `mutate ν•¨μˆ˜`에 전달 ν•  인자λ₯Ό μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14321442
- onSuccess(2번째 인자), onError(2번째 인자), onMutate(1번째 인자), onSettled(3번째 인자) 인자의 νƒ€μž…μœΌλ‘œ ν™œμš©λœλ‹€.
14331443
4. TContext: mutation function을 μ‹€ν–‰ν•˜κΈ° 전에 μˆ˜ν–‰ν•˜λŠ” `onMutate ν•¨μˆ˜μ˜ returnκ°’`을 μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14341444
- onMutate의 κ²°κ³Ό κ°’μ˜ νƒ€μž…μ„ onSuccess(3번째 인자), onError(3번째 인자), onSettled(4번째 인자)μ—μ„œ ν™œμš©ν•˜λ €λ©΄ ν•΄λ‹Ή νƒ€μž…μ„ μ§€μ •ν•΄μ•Ό ν•œλ‹€.
14351445

14361446
```tsx
1437-
export function useMutaion<
1447+
export function useMutation<
14381448
TData = unknown,
14391449
TError = unknown,
14401450
TVariables = void,

β€ŽREADME.v4.mdβ€Ž

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,10 +1055,14 @@ const useAddSuperHeroData = () => {
10551055
};
10561056
```
10571057
1058-
- λ§Œμ•½ λ¬΄νš¨ν™” ν•˜λ €λŠ” ν‚€κ°€ μ—¬λŸ¬ 개라면 μ•„λž˜ μ˜ˆμ œμ™€ 같이 λ‹€μŒκ³Ό 같이 λ°°μ—΄λ‘œ 보내주면 λœλ‹€.
1058+
- 참고둜, queryKey에 `["super-heroes"]`을 λ„˜κ²¨μ£Όλ©΄ queryKey에 "super-heroes"λ₯Ό ν¬ν•¨ν•˜λŠ” λͺ¨λ“  쿼리가 λ¬΄νš¨ν™”λœλ‹€.
10591059
10601060
```tsx
1061-
queryClient.invalidateQueries(["super-heroes", "posts", "comment"]);
1061+
queryClient.invalidateQueries(["super-heroes"]);
1062+
1063+
// μ•„λž˜ queryλ“€ λͺ¨λ‘ λ¬΄νš¨ν™” λœλ‹€.
1064+
const query = useQuery(["super-heroes", "superman"], fetchSuperHero);
1065+
const query = useQuery(["super-heroes", { id: 1 }], fetchSuperHero);
10621066
```
10631067
10641068
- μœ„μ— `enabled/refetch`μ—μ„œλ„ μ–ΈκΈ‰ν–ˆμ§€λ§Œ `enabled: false` μ˜΅μ…˜μ„ μ£Όλ©΄`queryClient`κ°€ 쿼리λ₯Ό λ‹€μ‹œ κ°€μ Έμ˜€λŠ” 방법 쀑 `invalidateQueries`와 `refetchQueries`λ₯Ό λ¬΄μ‹œν•œλ‹€.
@@ -1113,7 +1117,7 @@ const useAddSuperHeroData = () => {
11131117
await queryClient.cancelQueries(["super-heroes"]);
11141118

11151119
// 이전 κ°’
1116-
const previousHeroData = queryClient.getQueryData("super-heroes");
1120+
const previousHeroData = queryClient.getQueryData(["super-heroes"]);
11171121

11181122
// μƒˆλ‘œμš΄ κ°’μœΌλ‘œ 낙관적 μ—…λ°μ΄νŠΈ μ§„ν–‰
11191123
queryClient.setQueryData(["super-heroes"], (oldData: any) => {
@@ -1423,16 +1427,16 @@ const { data } = useQuery<
14231427

14241428
useMutation도 useQuery와 λ™μΌν•˜κ²Œ ν˜„μž¬ 4개이며, λ‹€μŒκ³Ό κ°™λ‹€.
14251429

1426-
1. TData: useMutaion에 λ„˜κ²¨μ€€ mutation function의 `μ‹€ν–‰ κ²°κ³Ό`의 νƒ€μž…μ„ μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
1430+
1. TData: useMutation에 λ„˜κ²¨μ€€ mutation function의 `μ‹€ν–‰ κ²°κ³Ό`의 νƒ€μž…μ„ μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14271431
- data의 νƒ€μž…κ³Ό onSuccess(1번째 인자)의 인자의 νƒ€μž…μœΌλ‘œ ν™œμš©λœλ‹€.
1428-
2. TError: useMutaion에 λ„˜κ²¨μ€€ mutation function의 `error` ν˜•μ‹μ„ μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
1432+
2. TError: useMutation에 λ„˜κ²¨μ€€ mutation function의 `error` ν˜•μ‹μ„ μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14291433
3. TVariables: `mutate ν•¨μˆ˜`에 전달 ν•  인자λ₯Ό μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14301434
- onSuccess(2번째 인자), onError(2번째 인자), onMutate(1번째 인자), onSettled(3번째 인자) 인자의 νƒ€μž…μœΌλ‘œ ν™œμš©λœλ‹€.
14311435
4. TContext: mutation function을 μ‹€ν–‰ν•˜κΈ° 전에 μˆ˜ν–‰ν•˜λŠ” `onMutate ν•¨μˆ˜μ˜ returnκ°’`을 μ§€μ •ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ΄λ‹€.
14321436
- onMutate의 κ²°κ³Ό κ°’μ˜ νƒ€μž…μ„ onSuccess(3번째 인자), onError(3번째 인자), onSettled(4번째 인자)μ—μ„œ ν™œμš©ν•˜λ €λ©΄ ν•΄λ‹Ή νƒ€μž…μ„ μ§€μ •ν•΄μ•Ό ν•œλ‹€.
14331437

14341438
```tsx
1435-
export function useMutaion<
1439+
export function useMutation<
14361440
TData = unknown,
14371441
TError = unknown,
14381442
TVariables = void,

0 commit comments

Comments
Β (0)