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