2017-11-30 16 views
0

가능합니까? FragmentContainer을 QueryRenderer 외부에서 사용할 수 있습니까? 달성하고자하는 것 : 나는 RefetchContainerSectionList을 가지고 있습니다. 각 섹션의 모든 항목은 FragmentContainer입니다. 섹션에서 항목을 선택하면이 항목 중 FlatList을 표시하는 새 화면을 열려고합니다. 항목 선택의 SectionList에서 전달한 데이터는 FragmentContainer의 목록입니다. 따라서 데이터를 볼 수 없으므로 조각을 사용해야합니다. FlatList 안에 조각을 사용하면 RelayFragmentContainer에서 누락 된 환경이 발생합니다. 그래서 동일한 단일 섹션을 다시 요청하는 FlatList에 대한 부모로 QueryRenderer를 추가했습니다. 그러나 이것은 QueryRenderer 요청을 추가로 만듭니다. 이전 화면의 데이터를 표시하고 싶습니다. 최소한 FragmentContainer의 목록을 cacheConfig로 전달하고 fetchQuery 메서드에서 반환하지만 json은 응답 json과 다르므로 원시 데이터가 아니지만 이미 __fragments이므로 Relay은 구문 분석 할 수 없습니다.Relay-Modern FragmentContainer 외부 QueryRenderer

답변

1

구성 요소와 조각이 어떻게 생겼는지에 대한 몇 가지 코드 예제를 얻는 것이 좋습니다. 즉, @mask 지시문을 사용하여 조사 할 수 있습니다.

나는 릴레이 문서에서 예를 촬영하고 여기에 포함했습니다

module.exports = createFragmentContainer(
    ({ user }) => ..., 
    graphql` 
    fragment Component_user on User { 
     internUser { 
     manager { 
      ...Component_internUser @relay(mask: false) 
     } 
     .... on Employee { 
      admins { 
      ...Component_internUser @relay(mask: false) 
      } 
      reports { 
      ...Component_internUser @relay(mask: false) 
      } 
     } 
     } 
    } 

    fragment Component_internUser on InternUser { 
     id 
     name 
    } 
    `, 
); 

조각이 조각을 호스팅하는 구성 요소에서 사용할 수에서 @mask 데이터가 포함 된 사용하여. 이에 대한 릴레이 문서는 다음에서 볼 수 있습니다. https://facebook.github.io/relay/docs/relay-directives.html#relay-mask-boolean

+0

오 고마워요! 이것은 내가 찾고 있던 100 %가 아니지만, 여기서 달성하기를 기대했던 것보다 더 많은 것을 제공합니다! 정말 고맙습니다! – parohy