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