有可能吗?我们可以在查询者外使用FragmentContainer
吗?我想实现的目标:我有一个带有SectionList
的RefetchContainer
。每个部分中的每个项目都是FragmentContainer
。当我从部分中选择一个项目时,我想打开一个新屏幕,其中显示了这些项目的FlatList
。我从SectionList
选择的项目选择中传递的数据是FragmentContainer
的列表。因此,我看不到数据,因此我需要使用片段。如果我仅在FlatList
内使用片段,则会从RelayFragmentContainer
中获得丢失的环境。因此,我在FlatList
中添加了一个QueryRenderer作为父,我再次请求同一单部分。但这提出了额外的QueryRenderer
请求。我想显示上一个屏幕中的数据。至少我将FragmentContainer
的列表作为cacheconfig传递,然后从fetchQuery
方法返回,但是,JSON与响应JSON的不同之处,因此它不是原始数据,而是__fragments
,因此Relay
无法分析它。
在这个问题中,您的组件和片段是什么样的,最好。也就是说,您可能需要使用@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