问题标签 [relay]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
122 浏览

reactjs - 中继框架未捕获类型错误:this.props.relay.commitUpdate 不是函数

我正在学习 Relay 框架和 GraphQL。我正在关注其官方网站上的教程。在该教程中,我将使用 GraphQL 突变构建游戏。游戏的目标是在 9 个方格的网格中找到隐藏的宝藏。当我在服务器上运行它时一切都很好,但是当我对其中一个网格执行单击操作时,应用程序抛出了一个错误:

从控制台的日志中,我可以清楚地看到 中没有commitUpdate()函数this.props.relay,但我很困惑,因为在Relay 的操场上,我可以看到 中有一个commitUpdate()函数this.props.relay

有什么想法吗?

0 投票
1 回答
1001 浏览

reactjs - 继电器抛出错误:无法读取未定义的属性“减少”

我正在尝试为我的简单应用程序创建加载更多功能。我使用 Sequelize 和 GraphQL 从 MySQL 获取数据。我使用 relay-starter-kit 作为我的应用程序的脚手架。

数据库.js

schema.js

应用程序.js

AppHomeRoute.js

这个应用程序很简单。有一个按钮,点击后会触发“加载更多”功能。您可以在 App.js 中看到该函数。每当函数运行时,它都会返回:

Cannot read property 'reduce' of undefined.

我试图确保查询是正确的,当我尝试使用 GraphiQL 进行查询时,我发现了一些“有趣”的东西。

如果我使用片段(与向服务器发出请求时应用程序的方式相同):

结果

如果我不使用片段(原始查询):

结果

假设问题出在查询上,但我不确定。我现在有点沮丧。任何帮助,将不胜感激。

谢谢。

0 投票
1 回答
4874 浏览

c# - 如何在“GraphQL for .NET”和“Relay”中链接模式?

我想用 Javascript 为前端和 C# 为后端构建一个 Web 应用程序,我想确定 GraphQL 的值。

  • 对于我的 C# 后端,我使用名为GraphQL for .NET的 GraphQL 实现。
  • 对于我的前端,我想使用Relay,因为它与 ReactJS 配合得很好。

现在对于我的后端,我实现了一个示例模式,如其中一个示例所示,如下所示:

在我的前端,我现在需要以某种方式告诉 Relay 这个模式。至少这是我在浏览教程时所理解的,因为出于某种原因,需要对 GraphQL 查询进行转译。这是我想如何加载所有 Droids 的示例:

在Relay的一个示例中,我看到babel-relay-plugin用于转换。它获取一个模式文件 (JSON)。Relay入门指南展示了如何使用 graphql-js 和 graphql-relay-js 创建这样的模式。

现在我的问题:

  1. 我真的需要在前端和后端创建模式吗?
  2. 教 Relay 我的模式有什么意义,因为后端已经使用模式来返回格式良好的数据?
  3. 在这种情况下使用 Relay 有什么好处?当我只通过常规 REST 端点以及 GraphQL 查询作为参数访问后端时,我会失去什么?
0 投票
1 回答
330 浏览

reactjs - 仅使用不带片段的查询来请求 GraphQL

我想从 Relay only Queries without Fragments 向 GraphQL Server 请求。例如,在链接中使用简单的中继应用程序:https : //facebook.github.io/relay/prototyping/playground.html#/,这总是向 GraphQL 服务器发布一个查询,包括这样的片段:

但我只想发布一个没有任何片段的查询,如下所示:

有什么解决方案吗?

0 投票
1 回答
807 浏览

reactjs - forceFetch 从 Relay 容器中获取特定片段

如果一个容器有多个片段,我怎么能forceFetch只有其中一个?

根据文档,调用this.props.relay.forceFetch()将更新与容器关联的每个片段。

虽然“按原样”强制获取完成了这项工作,但 Relay 的全部意义在于避免过度/不足获取。

有什么建议吗?

0 投票
0 回答
223 浏览

recursion - 使用 Relay 获取递归数据的不同方式?哪个更好等问题

最近我用Relay. 我用两种方法做到了。其中一个不起作用,第二个起作用。从最终用户的角度来看,它们看起来都具有相同的功能。简而言之,该任务几乎是一个通用的递归数据获取,并在下一级展开获取。

第一种方式:

设置继电器变量后获取数据expand。它是通过递归片段组合制成的。主要部分是这样的:

这样,它应该Relay.RootContainer只被调用一次。它对我不起作用,但我知道其他人实现了它并且一切正常(这是另一篇文章的主题)。

第二种方式:

第二种方法对我来说很容易。我不使用Relay变量,但我 Relay.Renderer会根据 UI 组件的状态调用下一级递归。像这样:

这就像我预期的那样工作。此外,我每次都有一个很好的加载器图标用于下一个级别。

所以,有了这个,我有三个问题:

首先

这些方法中的任何一种是可取的吗?也许在我不知道的地方有缺点?我想了解这一点,因为我正在 Relay向我的公司介绍,我愿意用 Reactand替换所有遗留前端Relay

第二

在某个时间点,用户将从这个递归分类器中选择一个类别,我将不得不获取导致当前级别的数据的完整路径。我的意思是,如果用户在层次结构的第 3 级选择一个类别,我必须返回这些数据:

因此,当我在级别 2 捕获组件内部拾取事件时,如何从根类别中获取完整路径Relay?我认为我可以使用一些RelayAPI 从商店获取它们?还是我必须自己实现这家商店?

第三

正如我在第二种实现方式中所说的,有一个很好的功能,每次Relay.Renderer调用时我都会得到加载微调器。如何以第一种方式完成?我的意思是在第一种方式中,数据获取隐藏在片段组合中,并且由setVariables. 我应该在方法之前触发微调器,然后在唯一的setVariables方法中将其关闭吗?但是似乎我必须为渲染容器创建一个全局存储微调器的状态..我在这里很困惑..onReadyStateChangeRelay.RootContainer

0 投票
0 回答
92 浏览

reactjs - 如果 GraphQL 和 Relay 是不可协商的,那么是否意味着最好忽略 redux?还是在关注点上没有完全重叠?

我已经阅读了很多关于这类主题的激烈和矛盾的信息,而且我在战斗中没有狗——我的优势是思想开放。

让我带你了解一下我非常非正式的思考过程,这让我想到,在厨房水槽boilerplate中的所有东西都使用 a 之后relay,我仍然需要类似redux.

  • 在很多情况下,足够的样板文件比充分的样板文件redux花费更少的时间和更少的思考GraphQLrelay
  • actions in的抽象redux是一件好事,它通过强迫他们分离关注点并封装请求的内部/它如何工作与一个请求的存在来使许多程序员免于麻烦。
  • 具体来说,如果我正在制作一个带有许多工具和画笔的画布编辑器,似乎需要很长时间才能以正确的方式开始relay制作所有这些mutators等等queries,并注意持久性。
  • 但是,如果我说,你知道,我不需要我的应用程序了解所有事物的每个状态,如果没有类似的东西redux,除了通过某种大容器对象管理状态或打开它之外,别无选择,这两者都是不如redux
  • 因此,redux在这种情况下,我的本能是正确的本能

但是,我可能只是不明白如何GraphQL以及relay应该如何使用。

因此,我要求关于 1)这是一个相当客观还是主观的问题,2)是否有共识,以及 3)我是否应该关心的具体答案。

还有一件事——如果在这种情况下redux是公平的游戏,我的应用程序应该有一个商店仍然是一个好的经验法则吗?或者我可以开始使用redux更模块化和更时尚的adhoc方式吗?

顺便说一下,这是一个更简单的场景:我想使用Stepperfrom material-uiwhich requires State。如果没有redux我的选择,要么在relay级别或以下忠实地执行此操作,将其放入组件中,要么尝试以某种方式捏造或混合它。唯一的声音选项是第一个,这需要时间。

0 投票
2 回答
354 浏览

javascript - 使用 GraphQL,声明一个与 GraphQL“类型”没有任何明显差异的支持模型“类”有什么好处或必要性?

我喜欢 Universal Relay Boilerplate——总的来说,我可以说他们非常周到地考虑如何将整个东西放在一起,不像大多数样板,文件夹组织等似乎是事后才想到的(我猜是因为你不会这样做一开始有什么重要的东西,或者什么)......但不是URB。或者至少我们对同样的事情很挑剔。

为什么做同样烦人的事...

...除了一件事:我不明白他们为什么这样做。

......两次近距离没有解释?

这是“类型”,由于别名,它实际上与原来的有点不同。

他们显然是有意的

这是我可以在样板文件中找到model的最显着的差异示例;type其他是相同的。实际上,我发现没有其他指南建议甚至提到做 amodel.js而是从type.js.

我能理解如果

  • 某些类型在安全性、性能、美学、设计等方面需要与模型不同
  • 某些类型故意跨越模型
  • 某些类型出于设计原因封装模型

但是他们到处都这样做,这让我觉得我在这里遗漏了一些重要的东西。

0 投票
1 回答
285 浏览

relayjs - React Relay:复杂的突变脂肪查询

我正在创建一个可以投票的投票应用程序。我目前坚持投票进行投票(本质上是创建投票)。

我的架构:

(长话短说:可以从主商店访问民意调查,但他可以直接访问观众的投票和投票(作为字段)。投票也可以从 min store 访问,但投票的投票也可以直接访问.

这个复杂的模式让我对如何定义我的胖查询感到困惑,因为它应该定义所有可能发生变化的东西。

以下是可以改变的:

  1. 创建了一个投票(因此在胖查询中为 voteEdge)。
  2. 投票被添加到 store 下的投票连接。
  3. 投票将添加到查看器下的投票连接。
  4. 在 store 下的 polls 连接中的某个 poll 下的 votes 连接中添加了一个投票。
  5. (仅当查看者也是投票的创建者时才有可能):在查看者下的投票连接中的某个投票下的投票连接中添加投票。

所以我的问题是我应该如何在我的胖查询中表达这一点,这是否足够?

或者我应该以某种方式将投票包括在民意调查中?

谢谢!

0 投票
1 回答
222 浏览

reactjs - 未捕获的错误:中继转换错误

我们在生产中面临 Relay/GraphQL/React 的问题。在 master 中测试时一切正常,但是在生产中,我们在控制台中收到以下错误,导致与 Relay/GraphQL/React 相关的所有内容都无法正常工作:

Uncaught Error: Relay transform error ``Map is not defined`` in file '/var/app/ondeck/app/react/relay/routes/xxx-route.jsx'. Try updating your GraphQL schema if an argument/field/type was recently added.

我们认为这与应用程序在部署时的构建有关,但是我们不知道从哪里开始。

这是我package.json的万一它有帮助: