在QueryRenderer

时间:2017-11-30 10:02:54

标签: reactjs react-native relayjs relaymodern

有可能吗?我们可以在QueryRenderer外部使用FragmentContainer吗? 我想要实现的目标: 我有一个RefetchContainer SectionList。每个部分中的每个项目都是FragmentContainer。当我从某个部分中选择一个项目时,我想打开一个新屏幕,在其中显示这些项目的FlatList。我从项目选择SectionList传递的数据是FragmentContainer的列表。因此,我无法查看数据,因此我需要使用片段。如果我只使用FlatList内的片段,我会从RelayFragmentContainer中找到丢失的环境。 所以我添加了一个QueryRenderer作为FlatList的父级,我再次请求相同的单个部分。但这会产生额外的QueryRenderer请求。我想显示上一屏幕的数据。 至少我将此FragmentContainer列表作为cacheConfig传递并从fetchQuery方法返回,但是,json与响应json不同,因此它不是原始数据但已经__fragments,因此Relay无法解析它。

1 个答案:

答案 0 :(得分:1)

最好在这个问题中获得一些代码示例,了解您的组件和片段是什么样的。也就是说,您可能希望使用@mask指令进行调查。

我从Relay文档中提取了一个示例,并将其包含在此处:

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