Managing Data Outside React

Query μœ μ§€ν•˜κΈ°

Relay κ°€ μ°Έμ‘° 데이터λ₯Ό 가비지 μ»¬λ ‰νŒ… ν•˜μ§€ μ•Šλ„λ‘ query λ₯Ό μˆ˜λ™μœΌλ‘œ μœ μ§€ν•˜κΈ° μœ„ν•΄ environment.retain λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆμ–΄μš”.

const {
  createOperationDescriptor,
  getRequest,
  graphql,
} = require('relay-runtime')

// 일반적인 GraphQL query 였브젝트
const query = graphql`...`;

// query λ₯Ό Relay κ°€ λ‹€λ£¨λŠ” λ°©μ‹μœΌλ‘œ κ°€κ³΅ν•˜μ—¬ μƒμ„±ν•΄μš”
const queryRequest = getRequest(query);
const queryDescriptor = createOperationDescriptor(
  queryRequest,
  variables
);

// Retain query; 
// Relay 가비지 μ»¬λ ‰μ…˜μ΄ 이 query 데이터λ₯Ό μˆ˜κ±°ν•˜μ§€ μ•Šλ„λ‘ ν•΄μš”.
const disposable = environment.retain(queryDescriptor);

// dispose λ₯Ό ν˜ΈμΆœν•˜λ©΄
// 이 query λŠ” Relay 의 가비지 μ»¬λ ‰μ…˜ λŒ€μƒμ΄ λ˜μ–΄ 데이터λ₯Ό μˆ˜κ±°ν•  수 μžˆμ–΄μš”.
// 단, λ‹€λ₯Έ μœ„μΉ˜μ—μ„œ ν•΄λ‹Ή query λ₯Ό retain ν•˜μ§€ μ•Šμ•„μ•Ό ν•΄μš”.
disposable.dispose();

μ•Œμ•„λ‘μ„Έμš”

Relay λŠ” data λ₯Ό render ν•˜λŠ” mount μƒνƒœμ˜ query μ»΄ν¬λ„ŒνŠΈλ₯Ό 기반으둜 query data retain 을 μžλ™μœΌλ‘œ κ΄€λ¦¬ν•΄μš”. κ·Έλž˜μ„œ 일반적인 μƒν™©μ—μ„œλŠ” production code μ—μ„œ retain 을 직접 ν˜ΈμΆœν•  ν•„μš”κ°€ μ—†μ–΄μš”. μ’€ 더 νŠΉμˆ˜ν•˜κ±°λ‚˜ 고급적인 μ‚¬μš©μ„ κ³ λ €ν•œλ‹€λ©΄, query data retention 은 Router 와 같은 infra-level μ½”λ“œμ—μ„œ 닀뀄야 ν•΄μš”.

Last updated