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

Posted

技术标签:

【中文标题】有没有办法在没有 GraphQL 的情况下使用 Relay?【英文标题】:Is there way to use Relay without GraphQL? 【发布时间】:2016-01-19 00:31:04 【问题描述】:

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

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

问题是:我可以使用自定义 API 函数将数据返回到片段中吗?像这样:

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

【问题讨论】:

【参考方案1】:

不,还没有。正在讨论使用“本地”数据扩充服务器架构的支持in this GitHub issue。

与此同时,您有两种选择:

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

【讨论】:

感谢您的回答!我认为有太多的复杂性和多余的灵活性,所以我选择了另一种方式:自己创建一个简单的 React 组件包装器。

以上是关于有没有办法在没有 GraphQL 的情况下使用 Relay?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法通过邮递员将文件上传到 GraphQL API?

有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?

有没有办法在不安装任何驱动程序的情况下将表从雪花导入 R 中的数据帧?

如何在没有 useMutation 的情况下在 Next.js 中使用 GraphQL 突变

如何在 Gatsby 中对 GraphQL 查询进行单元测试

如何在没有 http 的情况下为 graphql apis 编写健康检查