有没有办法在没有 GraphQL 的情况下使用 Relay?

Is there way to use Relay without GraphQL?

我正在我的 React 应用程序中尝试 Relay,它默认使用 GraphQL。它看起来像这样(Score 是一些 React.js 组件):

Score = Relay.createContainer(Score, {
    fragments: {
        score: () => Relay.QL`
            fragment on Score {
                initials,
                score,
            }
        `,
    },
});

问题是:我可以使用自定义 API 函数将数据 return 分成片段吗?像这样:

Score = Relay.createContainer(Score, {
    fragments: {
        score: myCustomFunction(), // It will return a dataset.
    },
});

不,还没有。正在讨论使用 "local" 数据扩充服务器模式的支持 in this GitHub issue

同时,您有两个选择:

  • 在 GraphQL 服务器上找到分数计算并通过模式访问它,就像访问任何其他字段一样(请注意,模式中的字段可以是任意计算的产物,因此您可以 "computed fields" 和不限于从二级商店获取普通数据)。
  • 在客户端定位数据并通过 GraphQL 之外的侧通道访问它;例如,您可以将它放在 Flux 存储和/或其他一些辅助模块中。