指令

Relay Modern 支持以下指令

@connection(key: String!, filters: [String]) #

支持兼容和现代模式。当使用分页容器时,Relay 期望连接字段用 @connection directive, 指令注释,更详细的信息和示例,请转到 PaginationContainer.

@relay(plural: Boolean) #

支持经典,兼容和现代的模式。详细的使用解释在 Relay.QL.

@relay(mask: Boolean) #

虽然通常 Relay 仅提供组件片段显式请求的字段的数据,@relay(mask: false) 但可以添加到片段扩展以不屏蔽的数据,并递归地包括来自引用片段的字段的数据。

这可能有助于在单个组件中处理嵌套或递归数据时减少冗余片段。

请记住,它通常被认为是 anti-pattern 来创建跨多个容器共享的单个片段。滥用此指令可能会导致您的应用程序超时。

在下面的例子中, user prop将包含数据 idname 字段, ...Component_internUser, 而不是 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
    }
  `,
);