OnSuccess
๋ฐ์ดํฐ๋ฅผ ์ฌํธ์ถํ์ง์๋๋ค. ์บ์ฑํ๊ณ ์๊ธฐ ๋๋ฌธ์ props drilling์ด ์ผ์ด๋์ง์์!
getTodos ๋ฆฌ์กํธ ํฌ๋๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ
์ฟผ๋ฆฌ ๊ฐ์ด ๋ฐฐ์ด์ธ์ด์ ๋ boolean ๊ฐ์ผ ๋ true false ๋๋ง์ ๋ฐ์ดํฐ๋ฅผ ํค๊ฐ์ผ๋ก ์ผ์์ ์ ์ฅํ๊ธฐ ์ํจ ์บ์ฑ!
๋ฆฌ์กํธ์ฟผ๋ฆฌ๋ ํธ๋ฆฌํ๋ค. state๊ด๋ฆฌ์ ๋ํ ํธ์์ฑ (UI๋ฐ๋๋๋ง๋ค ๋ค์ ์ฌ๋๋๋ง ํด์ค์ผํจ) useEffect ์์จ๋๋จ
datafetcing์ ๋ํ ๊ฒฐ๊ณผ๊ฐ
๋ธ๋ก๊ทธ ์์ฑ๊ธ ๊ฐ์๊ฑฐ๋ ์บ์ฑํด์ผํฉ๋๋ค. ์ ์ฅ! ์ค์๊ฐ์ผ๋ก ๋ถ๋ฌ์ค๋ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๋ฉด์๋จ (staleTime ์ ํจํ์ง์ใ ๋๋ก๋ง๋ค์ด์)
staleTime -> 0 ๊ธฐ๋ณธ๊ฐ ---- useQuery๋ฅผ ๋ง๋ฌ์ ๋ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ด cacheTime -> 5๋ถ ---- ๋ด๊ฐ ์ผ๋งํผ ์ ์ฅ์ ํ๊ณ ์์์ง? - ๋ง์ดํ์ด์ง ๊ฐ์ ๊ฒ
Queries Query Options { queryKey, staleTime ์ค์ ๊ฐ๋ฅ }
use-query์์ mutation: ์ค์ง ํธ์์ฑ!์ ์ํด์๋ง ์ฌ์ฉํ๊ณ axios์ ๋ค๋ฅผ ๋ฐ ์์ -> ์ค์ง ํธ์์ฑ mutate๋ ๋ฌด์กฐ๊ฑด ์๋จ์์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผํ๋ค.
mutateAsync๋ await์ ๊ฑธ๋ฆฐ๋ค. ๋ชจ๋ ์ค์ด ๊ฑธ๋ฆฐ๋ค onSuccess๋ ํ๊ณ ..
button disabled={isPending}
mutateAsync๋ฅผ ๋ ๋ง์ด์ฐ๋ ์ด์ ๋ก์ง์ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์. await์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์.!
๋ถํ์ํ ์์ฒญ์ ์ค์ด๋ ๊ฒ์ ๋ฐ๋์ ํ์ํ ๊ฒ! - ์๋ฌด
invalidateQueries = refetch() ๊ฐ๋ค ๊ทธ๋ฌ๋ ๋ฆฌ์กํธ์ฟผ๋ฆฌ ๊ณตํ์์๋ ์ ์๋ฅผ ๊ถ์ฅํ๋ค.
!!! ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ฅผ ์ฐ๋ฌ์ ์ฌ์ฉํ ๋ ์ข๋ค. enabled : ํน์ ํ ๊ฐ์ด ์ค๊ณ ๋์ ์คํํด๋ผ!
a -> b(a) -> c
a =3 3์ด๋ผ๋ ๊ฐ์ true๋ก ๋ฐ๊ฟ์ค !!a -> true
if(!!a) -> a์ ๊ฐ์ด ์์ผ๋ฉด?์ด๋ผ๋ ๋ป
a, b, c, ab, ac, ab ๋ฆฌ์กํธ์ ๋ฐ์ดํฐ๋ ์์์์ํ๊ฒ ์บ์ฑ๋์ด์๋ ๊ฒ์ด ์ข์ (-> )
v5๋ถํฐ๋ onSuccess์ onError๊ฐ ์ฌ๋ผ์ก๋ค.
queryKey: [params]
useEffect(() => { if(!data) {
}
},[data])
// ๋๊ด์ (๊ธ์ ์ ) ์ ๋ฐ์ดํธ // 99.99% onMutate: (data) => { // data iterable = undefined //nullํ์ queryClient.setQueryData(["todo", null], (oldData) => [...oldData.data, data]) }
Suspense fallback={
data! -> ๋ฌด์กฐ๊ฑด์๋ค assertion -> ? ์์์๋ ์๋ค. -> !๋ฅผ ์ธ๋๋ Suspense๋ฅผ ๊ฑธ์ด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค. -> !๋ ?๋ฅผ ์ฐ์ง์์๋ ํ์ ์คํฌ๋ฆฝํธ์์๋ ํ์ ์ธ์ดํํฐ ํ๊ฒฝ์ด๋๊น ๊ด์ฐฎ๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์๋ค๋ ๊ฒ์ ๋ณดใ ์ฅ
๋ก๋ฉ์ผ๋ก onSuccess onError~~
&& ? -> ์ธํ์๊ฐ ์๋ค.! assertion ์ํ๋๊น ํ์ ์ธ์ดํํฐํ ํ๊ฒฝ์ด๋, ์๋์์ฑ์ด๋๋ค.