如何在中继片段中连接变量

How to concat a variable in relay fragment

与我们使用 ${Component.getFragment('fragment')} 时类似,有没有一种方法可以简单地将变量与中继片段中的有效查询连接起来?与此类似:

const query = `
    allFriends {
        id
    }
`

Relay.createContainer(Component, {
    fragments: {
      viewer: () => Relay.QL`
        fragment on Query {
          allUsers {
            id
          }

          ${query}

        }
      `
    }
});

谢谢!

RelayQL 插件允许您通过将片段定义为变量来执行此操作。 See example here 在 RelayQL 文档页面上或查看以下示例:

在这里,我在 Email 类型上创建了一个片段,我可以将该片段注入到 Email 类型的任何字段中,例如 Interview #email 或用户#email:

const emailFragment = Relay.QL`
  fragment on Email {
    from
    to
    body
    subject
  }
`;

export default Relay.createContainer(Component, {
  initialVariables: {
    emailId: $emailId
  },
  fragments: {
    interview: () => Relay.QL`
      fragment on Interview {
        recordId
        email {
          ${emailFragment}
        }
      }
    `,
    viewer: () => Relay.QL`
      fragment on User {
        recordId
        email(id: $emailId) {
          ${emailFragment}
        }
      }
    `
  }
});