GraphQL - [ useQuery & useLazyQuery ]
๐ธ TIL
์ด๋ฒ์ ํ์ฌ์์ ๋ด๋นํ๋ ํ๋ก์ ํธ์ ์ ๋ถํฐ ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ GraphQL์ ์ ์ฉํด๋ณด์๋ค.
์ฒ์ ์ฌ์ฉํด๋ณด๊ธฐ ๋๋ฌธ์ ์์ง๊น์ง๋ ์ข์ ํผํฌ๋จผ์ค๋ฅผ ๋ณด์ผ ์ ์์ง๋ง ๋จ์๊ฐ์ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉฐ ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์๋ค๋ ๊ฒ๋ ํฐ ์ฅ์ ์ด๋ผ ์๊ฐํ๋ค.
์๋ฒ์์๋ ์ด๋ค์์ผ๋ก typeDefs๋ฅผ ์ค๊ณํ๊ณ , resolvers๋ ์ด๋ค์์ผ๋ก ์์ฑ์ด ๋๋์ง ๊ฐ๋จํ๊ฒ๋๋ง ์ดํดํ๊ณ client์ server๋ฅผ ์ง์ ๊ตฌํํ์ฌ ํ ์ธ์ดํด์ ํ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ์์ ์ฒ์์๋ ์๋ฒ๋ Node๋ฅผ, ํด๋ผ์ด์ธํธ๋ React๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์์ ๋ฅผ ๋ง๋ค์ด๋ณด์์๋ค.
๊ฐ๋จํ ์์ ๋ฅผ ๋ง๋ค์ด๋ณด๋ฉด์ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ํ๋ฆ์ ํ์ ํ๊ณ ๋๋๊น ์ค์ ์๋น์ค์ ์ ์ฉํ๋ ์๊ฐ๋ ์ ์ฝ๋์๊ณ , ์ดํด๋ ๋ ๋น ๋ฅด๊ณ , ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ถ๋ค๊ณผ์ ์ํต๋ ์ข ๋ ์ํํ๊ฒ ์งํํ ์ ์๊ฒ ๋์ด ํ์ ์ ๋์์ด ๋์๋ค.
GraphQL์ ๊ณต์๋ฌธ์๋ ์ ๋์ด์๊ณ , ๊ฒ์ํ๋ฉด ์ข์ ์๋ฃ๋ค์ด ๋ง์ด ๋์์ ๋ค๋ฃจ๋ ๋ฒ์ ๋ํ ์ค๋ช ์ ์๋ตํ๊ณ , GraphQL์ ์ฌ์ฉํ๋ฉด์ ์ฒ์์ด๋ค๋ณด๋ ํท๊ฐ๋ ธ๋ ๋ช๊ฐ์ง๋ฅผ ์ ๋ฆฌํด๋๊ฐ ์์ ์ด๋ค.
๐ useQuery์ useLazyQuery์ ์ฐจ์ด์ ๐
๊ฐ๋จํ ์์๋ก ๋ค์๊ณผ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ์๋ค.
GET_GREETING์ด๋ผ๋ query๊ฐ ์๊ณ , ๋ฒํผ์ ํด๋ฆญํ์ ๋, loadGreeting ํจ์๊ฐ ์คํํ๋ฉด์ useQuery๋ก ์๋ฒ์ ์๋ message๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ค.
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
useQuery๋ ์ฝ๋ฐฑํจ์ ์์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ธ๋ฐ ์ด์ ๋ํ ์ค๋ช ์ ๊ณต์๋ฌธ์์ ๋ค์๊ณผ ๊ฐ์ด ๋์์๋ค.
useQuery๋ ์ปดํฌ๋ํธ๊ฐ Mount, Render ๋ ๋, apollo client๊ฐ ์๋์ผ๋ก ์คํํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋๋ ๊ฒ์ด๋ค.
useLazyQuery๋ ์ปดํฌ๋ํธ๊ฐ Render ๋ ๋๊ฐ ์๋ ์ด๋ ํ ์ด๋ฒคํธ์ ๋ํด Query๋ฅผ ์คํํ๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ์๋ฌ๊ฐ ๋์ง ์๋๋ค.
๐ป ๋ธ๋ผ์ฐ์ ์ฝ์ ํ์ธ
getGreeting์ message์ ์๋ฒ์ ์ ์ฅํด๋์๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์์ ํ์ธํ๋ฏ์ด useQuery์ useLazyQuery๋ returnํ๋ ๊ฐ๋ ๋ค๋ฅด๋ค !
useQuery๋ query์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์๋ตํด์ฃผ๊ณ , useLazyQuery๋ ๊ฒฐ๊ณผ + ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์๋ ํจ์๋ฅผ returnํด ์ค๋ค.
๋ง์น๋ฉฐ ๐ธ
์์ง๊น์ง๋ ๋ง์ API๋ฅผ GraphQl๋ก ๊ตฌํํด๋ณด์ง ์์์ ์ฌ์ฉํ์ ๋์ ์ฅ์ ์ ํฌ๊ฒ ์๋ฟ์ง๋ ์๋๋ค.
์ง๊ธ๊น์ง ์จ๋ณด๋ฉด์ ๋๊ผ๋ GraphQl์ ๊ฐ์ ์ ์ ๋ฆฌํด๋ณด์๋ฉด
1. ํ์ํ ์ ๋ณด๋ค๋ง ์ ํํ์ฌ ๋ฐ์์ฌ ์ ์๋ค.
- OverFetching ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
- ๋ฐ์ดํฐ ์ ์ก๋ ๊ฐ์
2. ์ฌ๋ฌ ์ ๋ณด๋ค์ ํ๋ฒ์ ๋ฐ์์ฌ ์ ์๋ค.
- UnderFetching ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
- ์์ฒญ ํ์ ๊ฐ์
3. ํ๋์ EndPoint ์์ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ํ๋์ URL์์ POST๋ก ๋ชจ๋ ์์ฒญ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
์์ผ๋ก ์ข ๋ ๊น์ด์๊ฒ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ๋ ๋ง์ ์ฅ์ ๋ค์ ์ ์ ์์ ๊ฒ ๊ฐ๊ณ ๋จ์ ๋ํ ๋๊ปด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.