Fragments
Relayμμ React κ΅¬μ± μμμ λν λ°μ΄ν° μ’ μμ±μ μ μΈνκΈ° μν μ£Όμ λΉλ© λΈλ‘μ GraphQL νλκ·Έλ¨ΌνΈμ λλ€. Fragment λ GraphQL μ€ν€λ§μ μ 곡λ μ¬μ¬μ© κ°λ₯ν units μ λλ€.
μ€μ λ‘λ GraphQLμ νλμ ν΄λΉλ©λλ€.
fragment UserFragment on User {
name
age
profile_picture(scale: 2) {
uri
}
}JavaScript μ½λ λ΄μμ νλκ·Έλ¨ΌνΈλ₯Ό μ μΈνλ €λ©΄ λ€μ graphql νκ·Έ λ₯Ό μ¬μ©ν΄μΌ ν©λλ€ .
const {graphql} = require('react-relay');
const userFragment = graphql`
fragment UserFragment_user on User {
name
age
profile_picture(scale: 2) {
uri
}
}
`;
Rendering νλκ·Έλ¨ΌνΈ
νλκ·Έλ¨ΌνΈμ λν λ°μ΄ν°λ₯Ό λ λλ§νκΈ° μν΄ useFragmentHook μ μ¬μ©ν μ μμ΅λλ€ .
useFragmentνλκ·Έλ¨ΌνΈ μ μμ νλκ·Έλ¨ΌνΈ μ°Έμ‘° λ₯Ό μ·¨νκ³ ν΄λΉ νλκ·Έλ¨ΌνΈ λ° μ°Έμ‘°μ ν΄λΉνλ λ°μ΄ν°λ₯Ό λ°νν©λλ€.Fragment μ°Έμ‘° λ Relayκ° Fragment μ μμ μ μΈλ λ°μ΄ν° λ₯Ό μ½λ λ° μ¬μ©νλ κ°μ²΄μ λλ€.
보μ λ€μνΌ
UserComponent_userνλκ·Έλ¨ΌνΈ μ체λ μ νμ νλλ₯Ό μ μΈ νμ§λ§ ν΄λΉ νλλ₯Ό μ½μ νΉμ μ¬μ©μλ₯Ό μμμΌ ν©λλ€. μ΄κ²μ νλκ·Έλ¨ΌνΈ μ°Έμ‘°μ ν΄λΉν©λλ€. μ¦, Fragment μ°Έμ‘°λ λ°μ΄ν°λ₯Ό μ½μΌλ €λ μ νμ νΉμ μΈμ€ν΄μ€μ λν ν¬μΈν° μ κ°μ΅λλ€.μ»΄ν¬λνΈλ μλμΌλ‘ μ‘°κ° λ°μ΄ν°μ λν μ λ°μ΄νΈλ₯Ό ꡬλ ν©λλ€.
μ΄ νΉμ λ°μ΄ν°μ λν λ°μ΄ν°
Userκ° μ±μ μ΄λμμλ λ°μ΄ν° μ λ°μ΄νΈλλ©΄(μ: μ λ°μ΄ν° κ°μ Έμ€κΈ° λλ κΈ°μ‘΄ λ°μ΄ν° λ³κ²½μ ν΅ν΄) κ΅¬μ± μμλ μλμΌλ‘ μ΅μ μ λ°μ΄νΈλ‘ λ€μ λ λλ§λ©λλ€.
Relayλ μ»΄νμΌλ¬κ° μ€νλ λ μ μΈλ λͺ¨λ νλκ·Έλ¨ΌνΈμ λν typeμ μλμΌλ‘ μμ±νλ―λ‘ μ΄λ¬ν μ νμ μ¬μ©νμ¬ μ»΄ν¬λνΈ props μ νμ μΌλ‘ μ§μ ν μ μμ΅λλ€.
μμ±λ Flow μ νμλ μ λ―Έμ¬κ° μλ μ νμΈ μ‘°κ° μ°Έμ‘° μ νκ³Ό
$keyμ λ―Έμ¬<fragment_name>$keyκ° μλ μ νμΈ λ°μ΄ν° λͺ¨μ μ νμ΄ ν¬ν¨$dataλ©λλ€<fragment_name>$data. μ΄λ¬ν μ νμ λ€μ μ΄λ¦μΌλ‘ μμ±λ νμΌμμ κ°μ Έμ¬ μ μμ΅λλ€<fragment_name>.graphql.js. .μ°λ¦¬λ μμ μμμ user Props κ° νμν νλκ·Έλ¨ΌνΈ μ°Έμ‘°λ‘ μ λ ₯λκ³ μμΌλ©°, μ΄λ UserComponent_user.graphql μμ κ°μ Έμ¨
UserComponent_user$keyμ ν΄λΉλ©λλ€.
νλκ·Έλ¨ΌνΈ μ΄λ¦μ μ μμ μΌλ‘ κ³ μ ν΄μΌ ν©λλ€. μ΄λ₯Ό μ½κ² λ¬μ±νκΈ° μν΄ λͺ¨λ μ΄λ¦κ³Ό μλ³μλ₯Ό κΈ°λ°μΌλ‘ λ€μ κ·μΉμ μ¬μ©νμ¬ Fragmentμ μ΄λ¦μ μ§μ ν©λλ€
<module_name>_<property_name>. μ΄λ κ² νλ©΄ μ΄λ€ νλκ·Έλ¨ΌνΈκ° μ΄λ€ λͺ¨λμ μ μλμ΄ μλμ§ μ½κ² μλ³ν μ μμΌλ©° λμΌν λͺ¨λμ μ¬λ¬ νλκ·Έλ¨ΌνΈκ° μ μλ λ μ΄λ¦ μΆ©λμ νΌν μ μμ΅λλ€.
λμΌν μ»΄ν¬λνΈ λ΄μ μ¬λ¬ Fragmentμμ λ°μ΄ν°λ₯Ό λ λλ§ν΄μΌ νλ κ²½μ° useFragmentμ¬λ¬ λ² μ¬μ©ν μ μμ΅λλ€.
Composing νλκ·Έλ¨ΌνΈ
GraphQLμμ νλκ·Έλ¨ΌνΈλ μ¬μ¬μ© κ°λ₯ν λ¨μμ λλ€. μ¦, λ€λ₯Έ νλκ·Έλ¨ΌνΈλ₯Ό ν¬ν¨ν μ μμΌλ―λ‘ κ²°κ³Όμ μΌλ‘ νλκ·Έλ¨ΌνΈκ° λ€λ₯Έ νλκ·Έλ¨ΌνΈ λλ 쿼리λ΄μ ν¬ν¨λ μ μμ΅λλ€ .
κ° React μ»΄ν¬λνΈλ μμμ λ°μ΄ν° μ’ μμ±μ κ°μ Έμ¬ μ± μμ΄ μμ΅λλ€. μ¬λ°λ₯΄κ² λ λλ§νλ €λ©΄ μμμ propsμ λν΄ μμμΌ νλ κ²κ³Ό λ§μ°¬κ°μ§μ λλ€. μ΄ ν¨ν΄μ κ°λ°μκ° μ»΄ν¬λνΈ(νμν λ°μ΄ν°, λ λλ§νλ κ΅¬μ± μμ)μ λν΄ λ‘μ»¬λ‘ μΆλ‘ ν μ μμ§λ§ Relayλ μ 체 UI νΈλ¦¬μ λ°μ΄ν° μ’ μμ±μ λν μ μ 보기λ₯Ό λμΆν μ μμμ μλ―Έν©λλ€.
Co-location κ³Ό κ΄λ ¨μμ΅λλ€.
μ¬κΈ°μ μ£Όμν μ¬νμ΄ λͺ κ°μ§ μμ΅λλ€.
UsernameSectionλuser propμΌλ‘ νλκ·Έλ¨ΌνΈ μ°Έμ‘°κ° νμν©λλ€. μ΄μ μ μΈκΈνλ―μ΄ νλκ·Έλ¨ΌνΈ μ°Έμ‘°λ Relayκ° νλκ·Έλ¨ΌνΈ μ μμ μ μΈλ λ°μ΄ν°λ₯Ό μ½λ λ° μ¬μ©νλ κ°μ²΄μ λλ€. 보μλ€μνΌ μμUsernameSection_userνλκ·Έλ¨ΌνΈ μ체λ μ νμ νλλ₯Ό μ μΈ νμ§λ§ ν΄λΉ νλλ₯Ό μ½μ νΉμ Userλ₯Ό μμμΌ ν©λλ€. μ΄κ²μ΄ νλκ·Έλ¨ΌνΈ μ°Έμ‘°μ ν΄λΉν©λλ€.μ¦, νλκ·Έλ¨ΌνΈ μ°Έμ‘°λ λ°μ΄ν°λ₯Ό μ½μΌλ €λ μ νμ νΉμ μΈμ€ν΄μ€μ λν ν¬μΈν° μ κ°μ΅λλ€.
μ΄ κ²½μ° UsernameSectionμ μ λ¬λ User, μ¦ νλκ·Έλ¨ΌνΈ μ°Έμ‘°μλ μ€μ λ‘ μμ UsernameSection κ΅¬μ± μμμμ μ μΈν λ°μ΄ν°κ° ν¬ν¨λμ΄ μμ§ μμ΅λλ€.
λμ
UsernameSectionμ νλκ·Έλ¨ΌνΈ μ°Έμ‘°λ₯Ό μ¬μ©νμ¬ useFragmentλ₯Ό μ¬μ©νμ¬ λ΄λΆμ μΌλ‘ μ μΈλ λ°μ΄ν°λ₯Ό μ½μ΅λλ€.μ΄κ²μ λΆλͺ¨κ° μμμ΄ μ μΈν λ°μ΄ν°μ λν μ’ μμ±μ μμμ μΌλ‘ μμ±νλ κ²μ λ°©μ§νκ³ κ·Έ λ°λμ κ²½μ°λ λ§μ°¬κ°μ§μ΄λ―λ‘ λ€λ₯Έ μ»΄ν¬λνΈμ μν₯μ λ―ΈμΉ μΌλ € μμ΄ μ»΄ν¬λνΈμ λν΄ λ‘μ»¬λ‘ μΆλ‘ νκ³ μμ ν μ μμ΅λλ€.
κ·Έλ μ§ μκ³ λΆλͺ¨κ° μμμ λ°μ΄ν°μ μ‘μΈμ€ν μ μλ κ²½μ° μμμ΄ μ μΈν λ°μ΄ν°λ₯Ό μμ νλ©΄ λΆλͺ¨κ° μμλ μ μμ΅λλ€. μ΄λ₯Ό
λ°μ΄ν° λ§μ€νΉμ΄λΌκ³ ν©λλ€.μμμ΄ μμνλ νλκ·Έλ¨ΌνΈ μ°Έμ‘°λ
μμ νλκ·Έλ¨ΌνΈλ₯Ό ν¬ν¨νλ λΆλͺ¨ νλκ·Έλ¨ΌνΈλ₯Ό μ½μ κ²°κ³Όμ λλ€. μ°λ¦¬μ μμ μμμ μ΄λ...UsernameSection_userλ₯Ό ν¬ν¨νλ λ¨νΈμ μ½μ κ²°κ³Όκ° UsernameSectionμ΄ μμνλ λ¨νΈ μ°Έμ‘°κ° λ¨μ μλ―Έν©λλ€. μ¦, useFragmentλ₯Ό ν΅ν΄ νλκ·Έλ¨ΌνΈλ₯Ό μ½μ κ²°κ³Ό μ»μ λ°μ΄ν°λ ν΄λΉ νλκ·Έλ¨ΌνΈμ ν¬ν¨λ λͺ¨λ μμ νλκ·Έλ¨ΌνΈμ λν νλκ·Έλ¨ΌνΈ μ°Έμ‘° μν λ ν©λλ€.
Composing νλκ·Έλ¨ΌνΈ into Queries
Relayμ νλκ·Έλ¨ΌνΈλ₯Ό μ¬μ©νλ©΄ μ»΄ν¬λνΈμ λν λ°μ΄ν° μ’ μμ±μ μ μΈν μ μμ§λ§ μ체μ μΌλ‘ κ°μ Έμ¬ μλ μμ΅λλ€. λμ 쿼리μ μ§μ λλ κ°μ μ μΌλ‘ ν¬ν¨λμ΄μΌ ν©λλ€. μ΄κ²μ λͺ¨λ νλκ·Έλ¨ΌνΈκ° λ λλ§λ λ 쿼리μ μν΄μΌ ν¨μ μλ―Έν©λλ€ . λ¨μΌ νλκ·Έλ¨ΌνΈλ μ¬μ ν μ¬λ¬ 쿼리μ ν¬ν¨λ μ μμ§λ§ νλκ·Έλ¨ΌνΈ κ΅¬μ± μμμ νΉμ μΈμ€ν΄μ€λ₯Ό λ λλ§ν λ νΉμ 쿼리 μμ²μ μΌλΆλ‘ ν¬ν¨λμ΄μΌ ν©λλ€.
νλκ·Έλ¨ΌνΈκ° ν¬ν¨λ 쿼리λ₯Ό κ°μ Έμ€κ³ λ λλ§νλ €λ©΄ νλκ·Έλ¨ΌνΈ κ΅¬μ± μΉμ μ νμλ κ²μ²λΌ νλκ·Έλ¨ΌνΈλ₯Ό ꡬμ±νλ κ²κ³Ό λμΌν λ°©μμΌλ‘ ꡬμ±νλ©΄ λ©λλ€
μ°Έκ³ :
μμ λλ νλκ·Έλ¨ΌνΈ μ°Έμ‘° λ
UserComponentνλκ·Έλ¨ΌνΈλ₯Ό ν¬ν¨νλ μμ 쿼리λ₯Ό μ½μ κ²°κ³Όμ΄λ©°, μ΄ κ²½μ°μλ...UsernameSection_user. μ¦, μdataκ²°κ³Όλ‘ μ»μ κ²μusePreloadedQueryν΄λΉ 쿼리μ ν¬ν¨λ λͺ¨λ νμ νλκ·Έλ¨ΌνΈμ λν νλκ·Έλ¨ΌνΈ μ°Έμ‘° μν λ ν©λλ€.μ΄μ μ μΈκΈνλ―μ΄ λͺ¨λ νλκ·Έλ¨ΌνΈλ λ λλ§λ λ 쿼리μ μν΄μΌ ν©λλ€.
μ¦, λͺ¨λ νλκ·Έλ¨ΌνΈ μ»΄ν¬λνΈλ 쿼리μ νμ νλͺ©μ΄μ΄μΌ ν©λλ€ .
Last updated