Queries
GraphQL Query λ GreaphQL μλ²μμ query
νλ €λ λ°μ΄ν°μ λν μ€λͺ
μ
λλ€. query λ μλ²μ μμ²νλ €λ νλ μΈνΈ ( μ μ¬μ μΌλ‘ Fragment)λ‘ κ΅¬μ± λ©λλ€. 쿼리ν μ μλ νλͺ©μ 쿼리μ μ¬μ©ν μ μλ λ°μ΄ν°λ₯Ό μ€λͺ
νλ μλ²μ λ
ΈμΆλ GraphQL μ€ν€λ§ μ λ°λΌ λ€λ¦
λλ€ .
λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν΄μ μΏΌλ¦¬κ° μ¬μ©νλ μ νμ λ³μ(variables) 컬λ μ κ³Ό ν¨κ» λ€νΈμν¬λ₯Ό ν΅ν΄ μμ²μΌλ‘ 보λΌμμμ΅λλ€.
μ΄ μΏΌλ¦¬λ μλμ κ°μ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
Rendering Queries
Relayμμ 쿼리λ₯Ό λ λλ§ νκΈ° μν΄μ usePreloadedQuery λΌλ hook μ μ¬μ©ν μ μμ΅λλ€. usePreloadedQuery λ 쿼리μ μ μμ μ°Έμ‘°λ₯Ό 맀κ°λ³μλ‘ μ¬μ©νμ¬ ν΄λΉ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
usePreloadedQuery λ graphql
쿼리μ μ°Έμ‘°λ₯Ό κ°μ§κ³ ν΄λΉ 쿼리μ λν΄ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
HomeTab μ΄λΌλ μ»΄ν¬λνΈμ κ²½μ°μλ Props λ‘ λ΄λ €λ°λ queryRefλ₯Ό μ€λͺ νκ³ μ°Έμ‘°νμ¬ μΏΌλ¦¬μ ν΄λΉλλ λ°μ΄ν°λ₯Ό λ°νν©λλ€.
PreloadedQueryλ relay Complier κ° μμ±ν΄μ£Όλ type parameter λ₯Ό νμ μΌλ‘ κ°μ§κ³ μμ΅λλ€. μμ κ²½μ°μλ
HomeTabQuery
μ νμ μ΄ μ¬κΈ°μ ν΄λΉλ©λλ€.νλκ·Έλ¨ΌνΈ μ μ μ¬νκ² κ΅¬μ± μμλ 쿼리 λ°μ΄ν°μ λν μ λ°μ΄νΈλ₯Ό μλμΌλ‘ ꡬλ ν©λλ€ . μ΄ μΏΌλ¦¬μ λν λ°μ΄ν°κ° μ±μ μ΄λμμλ μ λ°μ΄νΈλλ©΄ κ΅¬μ± μμλ μ΅μ μ λ°μ΄νΈλ λ°μ΄ν°λ‘ μλμΌλ‘ λ€μ λ λλ§λ©λλ€.
usePreloadedQuery λν type parameter λ₯Ό HomeTabQuery λ‘ κ°μ§κ³ μμ΅λλ€.
Relayλ λ€μκ³Ό κ°μ μ΄λ¦ νμμΌλ‘ μμ±λ νμΌμμ κ°μ Έμ¬ μ μλ μ μΈλ 쿼리μ λν΄ typeμ μλμΌλ‘ μμ±νλ€λ κ²μ κΈ°μ΅νμΈμ.
<query_name>
.graphql.js
쿼리λ₯Ό λ λλ§νκΈ° μ΄μ μ Relay Environment Provider λ‘ root λ₯Ό κ°μΈ Relay νκ²½μ΄ μ 곡λλμ§ νμΈν΄μΌν©λλ€.
Fetching Queries for Render
쿼리λ₯Ό λ λλ§ νλ κ² μΈμλ 쿼리λ°μ΄ν°λ₯Ό μλ²μμ κ°μ ΈμμΌ ν©λλ€. μΌλ°μ μΌλ‘ μ°λ¦¬λ μ±μ λ£¨νΈ μ΄λκ°μμ νλ λλ λͺκ°μ μΏΌλ¦¬λ‘ νλ©΄μ λ λλ§νλ λ° νμν λͺ¨λ λ°μ΄ν°λ€μ μΆμ ν μμλλ‘ λ§λ€κΈΈ μν©λλ€. μ΄μμ μΌλ‘λ μ± λ λλ§μ μμνκΈ° μ μ κ°λ₯ν ν 빨리 κ°μ Έμ€λ κ²μ΄ μ’μ΅λλ€.
λμ€μ 쿼리λ₯Ό μλ²μμ κ°μ Έμ€κΈ° μν΄μuseQueryLoader
Hook μ μ¬μ©ν μ μμ΅λλ€ .
μ°λ¦¬λ useQueryLoader λ₯Ό AppTabs μ»΄ν¬λνΈ μμμ νΈμΆνκ³ μμ΅λλ€.
μ΄ κ²½μ°
HomeTabQuery
쿼리(μ΄μ μ μμμ μ μΈν 쿼리)κ° νμνλ©°HomeTabQuery.graphql
μμ μλ μμ±λ νμΌμ μ»μ μ μμ΅λλ€.μνμ μ μ₯λκ³ useQueryLoader μ μν΄ λ°νλλ
PreloadedQuery
μ μ΄κΈ° κ°μΌλ‘ homeTabQueryRefλ₯Ό μ¬μ© μ€μ λλ€.
useQueryLoader νΈμΆμ ν΅ν΄ μ°λ¦¬λ λκ°μ§λ₯Ό μ»μ μ μμ΅λλ€.
homeTabQueryRef
: κ°μ Έμ€κ±°λ κ°μ Έμ¨ 쿼리μ λλ€. μ΄ κ°μ useQueryLoader κ° νΈμΆ λμ§ μμμ κ²½μ° null μ΄ λ©λλ€. \loadHomeTabQuery
: μμ§ μΊμλμ§ μμ κ²½μ°μλ μλ²μμ μ΄ μΏΌλ¦¬μ λν λ°μ΄ν°λ₯Όκ°μ Έμ€κ³ , μΏΌλ¦¬κ° μμ νλ λ³μκ° μλ κ°μ²΄λ₯Ό μ 곡νλ ν¨μ μ λλ€. (μ¬κΈ°μλ {id : 4})
μ΄ ν¨μλ₯Ό νΈμΆνλ©΄ PreloadedQuery 쿼리 λμ μ homeTabQueryRef λ‘ μΏΌλ¦¬λ₯Ό μ λ°μ΄νΈ ν©λλ€.
λν
λ λλ§ μ μ λ°νλ μ΄λ²€νΈ νΈλ€λ¬
μμ μ΄ ν¨μλ₯Ό νΈμΆ ν©λλ€ . μ΄λ₯Ό ν΅ν΄ μ νμ΄ λ λλ§μ μμνκΈ° μ μλ κ°λ₯ν ν 빨리 νλ©΄μ λν λ°μ΄ν° κ°μ Έμ€κΈ°λ₯Ό μμν μ μμ΅λλ€.μ΄ ν¨μλ λ λλ§ μ€μ νΈμΆν μ μμ΅λλ€. κ·Έλ κΈ° λλ¬Έμ μ»΄ν¬λνΈμ λ λ ν¨μ μΈλΆμμ νΈμΆ ν΄μΌ ν©λλ€ . κ·Έλ μ§ μμΌλ©΄ μ€λ₯κ° λ°μν©λλ€.
HomeTab μ»΄ν¬λνΈκ° μλλΌ AppTabs μ»΄ν¬λνΈμμ νΈμΆν΄μΌν©λλ€.
useQueryLoader λ μ»΄ν¬λνΈκ° μΈλ§μ΄νΈ λ λ μ μ₯ λ λͺ¨λ μΏΌλ¦¬κ° μλμΌλ‘ μμ λ©λλ€. 쿼리λ₯Ό μμ νλ©΄ Relayκ° λ μ΄μ ν΄λΉ 쿼리μ νΉμ μΈμ€ν΄μ€μ λν λ°μ΄ν°λ₯Ό μΊμμ 보κ΄νμ§ μμ΅λλ€. λν μ»΄ν¬λνΈκ° μΈλ§μ΄νΈ λ λ, 쿼리μ λν μμ²μ΄ μμ§ μ§ν μ€μΈ κ²½μ°μλ μ·¨μλ©λλ€.
μμ λ§μ§λ§μΌλ‘ , 쿼리λ₯Ό λ λλ§νκΈ° μ΄μ μ Relay Environment Provider λ‘ root λ₯Ό κ°μΈ Relay νκ²½μ΄ μ 곡λλμ§ νμΈν΄μΌν©λλ€.
μμ© νλ‘κ·Έλ¨μ μ΄κΈ° λ‘λμ νμν λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν΄ λΆλͺ¨ κ΅¬μ± μμμ 컨ν μ€νΈ μΈλΆμμ κ°μ ΈμμΌ νλ κ²½μ°κ° μμ΅λλ€.
μ΄λ¬ν κ²½μ° useQueryLoaderλ₯Ό μ¬μ©νμ§ μκ³ loadQuery
λ₯Ό μ¬μ©ν΄μ APIλ₯Ό μ§μ μ¬μ©ν μ μμ΅λλ€.
μ»΄ν¬λνΈμ μ΄κΈ°κ°μΌλ‘ 쿼리λ₯Ό μ λ¬ν΄μ£ΌκΈ° μν 쿼리λ₯Ό μ»κΈ° μν΄
loadQuery
ν¨μλ₯Ό μ§μ νΈμΆν©λλ€μ΄ κ²½μ° λ£¨νΈ
AppTabs
μ»΄ν¬λνΈκ° 쿼리 μ°Έμ‘°μ μλͺ μ κ΄λ¦¬νκ³ μ μ ν μκ°μ μμ ν κ²μΌλ‘ μμν©λλ€.μ΄ μμ μμλ "μ± μ΄κΈ°ν"μ λν μΈλΆ μ 보λ₯Ό λͺ¨νΈνκ² λ¨κ²¨λμμ΅λλ€. μ ν리μΌμ΄μ λ§λ€ λ€λ₯Ό κ²μ΄κΈ° λλ¬Έμ λλ€. μ¬κΈ°μ μ£Όλͺ©ν΄μΌ ν μ€μν μ μ λ£¨νΈ μ»΄ν¬λνΈ λ λλ§μ μμνκΈ° μ μ 쿼리 μ°Έμ‘°λ₯Ό μ»μ΄μΌ νλ€λ κ²μ λλ€. νΉν
loadQuery
λ λ λλ§ μ€μλ νΈμΆν μ μμ΅λλ€. μ»΄ν¬λνΈμ λ λ ν¨μ μΈλΆμμ νΈμΆν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ μ€λ₯κ° λ°μν©λλ€.
Render as you Fetch
μμ μλ κ°λ₯ν ν 빨리 κ°μ Έμ€κΈ°λ₯Ό μμνκ³ (fetch λ₯Ό μμνκΈ° μν΄ μ»΄ν¬λνΈκ° λ λλ§λ λκΉμ§ κΈ°λ€λ¦¬λ κ²κ³Ό λ°λ), μ¬μ©μμκ² μ½ν μΈ λ₯Ό νμν μ μλλ‘ λ°μ΄ν° fetch κ³Ό λ λλ§μ λΆλ¦¬νλ λ°©λ²μ 보μ¬μ€λλ€.
λν waterfalling round trips
μ λ°©μ§νλ λ° λμμ΄ λλ©° fetchκ° λ°μνλ μκΈ°μ λν΄ λ λ§μ μ μ΄μ μμΈ‘ κ°λ₯μ±μ μ 곡νλ λ°λ©΄, λ λλ§ μ€μ κ°μ Έμ€λ©΄ fetchκ° λ°μνκ±°λ λ°μν΄μΌ νλ μμ μ κ²°μ νκΈ°κ° λ μ΄λ €μμ§λλ€.
μ΄κ²μ React Suspense μ "render-as-you-fetch"ν¨ν΄κ³Ό μ λ§μ΅λλ€ .
μ΄κ²μ Relayλ‘ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ λ° μ νΈλλ ν¨ν΄μ΄λ©° λͺλͺμ μν©μμ μ μ©μ΄ λλλ°
μΌλ°μ μΌλ‘λ μ²μμ UI 보μ¬μ§μ§ μλ€κ° λμ€μ μνΈ μμ©(μ: λ©λ΄, νμ€λ², λν μμ λ±) λ° μΆκ° λ°μ΄ν°λ₯Ό κ°μ ΈμμΌ ν©λλ€.
Lazily Fetching Queries during Render
쿼리λ₯Ό κ°μ Έμ€λ λ λ€λ₯Έ λ°©λ²μ κ΅¬μ± μμκ° λ λλ§λ λ 쿼리λ₯Ό λλ¦¬κ² κ°μ Έμ€λ κ²μ λλ€. κ·Έλ¬λ μ΄μ μ μΈκΈνλ―μ΄ μ νΈλλ ν¨ν΄μ λ λλ§ μ μ 쿼리 κ°μ Έμ€κΈ°λ₯Ό μμνλ κ²μ λλ€. μ£Όμ μμ΄ μ§μ° κ°μ Έμ€κΈ°λ₯Ό μ¬μ©νλ©΄ μ€μ²© λλ waterfalling round trips νΈλ¦¬κ±°λκ³ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
쿼리λ₯Ό λλ¦¬κ² κ°μ Έμ€λ €λ©΄ useLazyLoadQuery
Hookμ μ¬μ©ν μ μμ΅λλ€ .
useLazyLoadQuery
graphql 쿼리μ ν΄λΉ 쿼리μ λν μΌλΆ λ³μλ₯Ό μ¬μ©νκ³ ν΄λΉ 쿼리μ λν΄ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λ°νν©λλ€. λ³μλ GraphQL 쿼리 λ΄μμ μ°Έμ‘° λλ λ³μμ κ°μ ν¬ν¨νλ κ°μ²΄ μ λλ€.νλκ·Έλ¨ΌνΈμ μ μ¬νκ² κ΅¬μ± μμλ 쿼리 λ°μ΄ν°μ λν μ λ°μ΄νΈλ₯Ό μλμΌλ‘ ꡬλ ν©λλ€. μ΄ μΏΌλ¦¬μ λν λ°μ΄ν°κ° μ±μ μ΄λ κ³³μμλ μ λ°μ΄νΈλλ©΄ κ΅¬μ± μμλ μ΅μ μ λ°μ΄νΈλ λ°μ΄ν°λ‘ μλμΌλ‘ λ€μ λ λλ§λ©λλ€.
Relayλ μ μΈλ 쿼리μ λν΄ typeμ μλμΌλ‘ μμ±νλ―λ‘ κ°μ Έμ€κ³ μ¬μ©ν μ μμ΅λλ€
useLazyLoadQuery
. μ΄λ¬ν μ νμ λ€μκ³Ό κ°μ μ΄λ¦ νμμΌλ‘ μμ±λ νμΌμμ μ¬μ©ν μ μμ΅λλ€<query_name>.graphql.js
.
κΈ°λ³Έμ μΌλ‘ μ»΄ν¬λνΈ λ λλ§λ λ Relayλ μ΄ μΏΌλ¦¬μ λν λ°μ΄ν°λ₯Ό κ°μ Έμ€κ³
useLazyLoadQuery
(μμ§ μΊμλμ§ μμ κ²½μ°) μ΄λ₯Ό νΈμΆ κ²°κ³Όλ‘ λ°νν©λλ€ .μ»΄ν¬λνΈλ₯Ό λ€μ λ λλ§ νκ³ μλ μ¬μ©λ κ²κ³Ό λ€λ₯Έ 쿼리 λ³μ λ₯Ό μ λ¬ νλ©΄ μΏΌλ¦¬κ° μ λ³μλ‘ λ€μ κ°μ Έμμ§κ³ μ μ¬μ μΌλ‘ λ€λ₯Έ λ°μ΄ν°λ‘ λ€μ λ λλ§λ©λλ€.
Last updated