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