QueryRenderer 之外的中继现代 FragmentContainer
relay-modern FragmentContainer outside QueryRenderer
可能吗?我们可以在 QueryRenderer 之外使用 FragmentContainer
吗?
我想要实现的目标:
我有一个 RefetchContainer
和一个 SectionList
。每个部分中的每个项目都是 FragmentContainer
。当我 select 一个部分的项目时,我想打开一个新屏幕,在其中显示这些项目的 FlatList
。我从项目 select 上的 SectionList
传递的数据是 FragmentContainer
的列表。因此我看不到数据,所以我需要为它使用片段。如果我只使用 FlatList
中的片段,我会从 RelayFragmentContainer
中得到一个缺失的环境。
因此,我为 FlatList
添加了一个 QueryRenderer 作为父级,我再次请求相同的单个部分。但这会产生额外的 QueryRenderer
请求。我想显示上一屏幕的数据。
至少我将这个 FragmentContainer
列表作为 cacheConfig 和 return 从 fetchQuery
方法传递,但是 json 不同于响应 json 因此它不是原始数据,但已经 __fragments
,因此 Relay
无法解析它。
最好在这个问题中获得一些代码示例,了解您的组件和片段是什么样的。也就是说,您可能想使用 @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
可能吗?我们可以在 QueryRenderer 之外使用 FragmentContainer
吗?
我想要实现的目标:
我有一个 RefetchContainer
和一个 SectionList
。每个部分中的每个项目都是 FragmentContainer
。当我 select 一个部分的项目时,我想打开一个新屏幕,在其中显示这些项目的 FlatList
。我从项目 select 上的 SectionList
传递的数据是 FragmentContainer
的列表。因此我看不到数据,所以我需要为它使用片段。如果我只使用 FlatList
中的片段,我会从 RelayFragmentContainer
中得到一个缺失的环境。
因此,我为 FlatList
添加了一个 QueryRenderer 作为父级,我再次请求相同的单个部分。但这会产生额外的 QueryRenderer
请求。我想显示上一屏幕的数据。
至少我将这个 FragmentContainer
列表作为 cacheConfig 和 return 从 fetchQuery
方法传递,但是 json 不同于响应 json 因此它不是原始数据,但已经 __fragments
,因此 Relay
无法解析它。
最好在这个问题中获得一些代码示例,了解您的组件和片段是什么样的。也就是说,您可能想使用 @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