릴레이 디렉티브 관련해서 질문 두 가지가 있습니다. 1. <https://relay.de...
# 질문
u
릴레이 디렉티브 관련해서 질문 두 가지가 있습니다. 1. @connection에서 filters는 어떤 역할인가요? 2. @preloadable을 명시하고 안하고 컴파일러 아웃풋에는 차이가 없던데, 어떤 역할을 하는걸까요? 엔트리포인트 예제에서는 생성된 ConcreteRequest로부터 타입만 바꿔서 사용하고 있더라고요. (전 타입스크립트 사용중 입니다)
h
filters 같은 경우는, 지정하지 않으면 목록 쿼리에서 넘어가는 필터 인자들이 전부 connection id 를 생성하는데 사용되는데요, 필터 종류가 많아지면 조합이 기하급수적으로 늘어날 수 있기 때문에 이를 방지하고 명시적으로 필터를 관리하고 싶을때 씁니다.
👍 3
Guided Tour 에 내용이 좀 있으니 참고해보시면 좋을 듯 합니다 https://relay.dev/docs/guided-tour/list-data/updating-connections/#connection-identity-with-filters
Apollo 나 URQL 에 있는 캐시 키 인자랑 역할이 동일합니다
2번 질문에 대한 답은.. Relay 용어집에 내용이 듬성듬성 있는데 이거 외에 디테일은 문서에서 확인하기 좀 어려우실 겁니다. 제 권장은 관련 테스트코드를 찾아보시는것이.. https://relay.dev/docs/glossary/#preloadable-query-registry
설명이나 코드에 따르면 Preloadable Concrete Request 객체를 생성하기 위한 지시자이고, 생성된 Preloadable Concrete Request 객체들은 중앙 레지스트리에 등록되어 관리되고, 이 레지스트리는 RN 에서 동적 로딩 관련 동작을 보장하기 위해 필요하다고 하네요
출력이 다른 이유는 뭐가 더 있을지 모르겠지만, 컴파일러 코드에서 preloadable 의 경우 relay runtime 의 Preloadable Concrete Request Registry 에 생성된 객체를 미리 등록하는 코드가 출력하는 코드를 볼 수 있습니다. https://github.com/facebook/relay/blob/764af24d78b4cfca95a82e82afae405efe0d3ad2/compiler/crates/relay-compiler/src/build_project/artifact_content.rs#L456
u
감사합니다!