问题标签 [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.
reactjs - 中继框架未捕获类型错误:this.props.relay.commitUpdate 不是函数
我正在学习 Relay 框架和 GraphQL。我正在关注其官方网站上的教程。在该教程中,我将使用 GraphQL 突变构建游戏。游戏的目标是在 9 个方格的网格中找到隐藏的宝藏。当我在服务器上运行它时一切都很好,但是当我对其中一个网格执行单击操作时,应用程序抛出了一个错误:
从控制台的日志中,我可以清楚地看到 中没有commitUpdate()
函数this.props.relay
,但我很困惑,因为在Relay 的操场上,我可以看到 中有一个commitUpdate()
函数this.props.relay
。
有什么想法吗?
reactjs - 继电器抛出错误:无法读取未定义的属性“减少”
我正在尝试为我的简单应用程序创建加载更多功能。我使用 Sequelize 和 GraphQL 从 MySQL 获取数据。我使用 relay-starter-kit 作为我的应用程序的脚手架。
数据库.js
schema.js
应用程序.js
AppHomeRoute.js
这个应用程序很简单。有一个按钮,点击后会触发“加载更多”功能。您可以在 App.js 中看到该函数。每当函数运行时,它都会返回:
Cannot read property 'reduce' of undefined
.
我试图确保查询是正确的,当我尝试使用 GraphiQL 进行查询时,我发现了一些“有趣”的东西。
如果我使用片段(与向服务器发出请求时应用程序的方式相同):
结果:
如果我不使用片段(原始查询):
结果:
假设问题出在查询上,但我不确定。我现在有点沮丧。任何帮助,将不胜感激。
谢谢。
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 创建这样的模式。
现在我的问题:
- 我真的需要在前端和后端创建模式吗?
- 教 Relay 我的模式有什么意义,因为后端已经使用模式来返回格式良好的数据?
- 在这种情况下使用 Relay 有什么好处?当我只通过常规 REST 端点以及 GraphQL 查询作为参数访问后端时,我会失去什么?
reactjs - 仅使用不带片段的查询来请求 GraphQL
我想从 Relay only Queries without Fragments 向 GraphQL Server 请求。例如,在链接中使用简单的中继应用程序:https : //facebook.github.io/relay/prototyping/playground.html#/,这总是向 GraphQL 服务器发布一个查询,包括这样的片段:
但我只想发布一个没有任何片段的查询,如下所示:
有什么解决方案吗?
reactjs - forceFetch 从 Relay 容器中获取特定片段
如果一个容器有多个片段,我怎么能forceFetch
只有其中一个?
根据文档,调用this.props.relay.forceFetch()
将更新与容器关联的每个片段。
虽然“按原样”强制获取完成了这项工作,但 Relay 的全部意义在于避免过度/不足获取。
有什么建议吗?
recursion - 使用 Relay 获取递归数据的不同方式?哪个更好等问题
最近我用Relay
. 我用两种方法做到了。其中一个不起作用,第二个起作用。从最终用户的角度来看,它们看起来都具有相同的功能。简而言之,该任务几乎是一个通用的递归数据获取,并在下一级展开获取。
第一种方式:
设置继电器变量后获取数据expand
。它是通过递归片段组合制成的。主要部分是这样的:
这样,它应该Relay.RootContainer
只被调用一次。它对我不起作用,但我知道其他人实现了它并且一切正常(这是另一篇文章的主题)。
第二种方式:
第二种方法对我来说很容易。我不使用Relay
变量,但我
Relay.Renderer
会根据 UI 组件的状态调用下一级递归。像这样:
这就像我预期的那样工作。此外,我每次都有一个很好的加载器图标用于下一个级别。
所以,有了这个,我有三个问题:
首先
这些方法中的任何一种是可取的吗?也许在我不知道的地方有缺点?我想了解这一点,因为我正在
Relay
向我的公司介绍,我愿意用
React
and替换所有遗留前端Relay
。
第二
在某个时间点,用户将从这个递归分类器中选择一个类别,我将不得不获取导致当前级别的数据的完整路径。我的意思是,如果用户在层次结构的第 3 级选择一个类别,我必须返回这些数据:
因此,当我在级别 2 捕获组件内部拾取事件时,如何从根类别中获取完整路径Relay
?我认为我可以使用一些Relay
API 从商店获取它们?还是我必须自己实现这家商店?
第三
正如我在第二种实现方式中所说的,有一个很好的功能,每次Relay.Renderer
调用时我都会得到加载微调器。如何以第一种方式完成?我的意思是在第一种方式中,数据获取隐藏在片段组合中,并且由setVariables
. 我应该在方法之前触发微调器,然后在唯一的setVariables
方法中将其关闭吗?但是似乎我必须为渲染容器创建一个全局存储微调器的状态..我在这里很困惑..onReadyStateChange
Relay.RootContainer
reactjs - 如果 GraphQL 和 Relay 是不可协商的,那么是否意味着最好忽略 redux?还是在关注点上没有完全重叠?
我已经阅读了很多关于这类主题的激烈和矛盾的信息,而且我在战斗中没有狗——我的优势是思想开放。
让我带你了解一下我非常非正式的思考过程,这让我想到,在厨房水槽boilerplate
中的所有东西都使用 a 之后relay
,我仍然需要类似redux
.
- 在很多情况下,足够的样板文件比充分的样板文件
redux
花费更少的时间和更少的思考GraphQL
relay
action
s in的抽象redux
是一件好事,它通过强迫他们分离关注点并封装请求的内部/它如何工作与一个请求的存在来使许多程序员免于麻烦。- 具体来说,如果我正在制作一个带有许多工具和画笔的画布编辑器,似乎需要很长时间才能以正确的方式开始
relay
制作所有这些mutators
等等queries
,并注意持久性。 - 但是,如果我说,你知道,我不需要我的应用程序了解所有事物的每个状态,如果没有类似的东西
redux
,除了通过某种大容器对象管理状态或打开它之外,别无选择,这两者都是不如redux
- 因此,
redux
在这种情况下,我的本能是正确的本能
但是,我可能只是不明白如何GraphQL
以及relay
应该如何使用。
因此,我要求关于 1)这是一个相当客观还是主观的问题,2)是否有共识,以及 3)我是否应该关心的具体答案。
还有一件事——如果在这种情况下redux
是公平的游戏,我的应用程序应该有一个商店仍然是一个好的经验法则吗?或者我可以开始使用redux
更模块化和更时尚的adhoc
方式吗?
顺便说一下,这是一个更简单的场景:我想使用Stepper
from material-ui
which requires State
。如果没有redux
我的选择,要么在relay
级别或以下忠实地执行此操作,将其放入组件中,要么尝试以某种方式捏造或混合它。唯一的声音选项是第一个,这需要时间。
javascript - 使用 GraphQL,声明一个与 GraphQL“类型”没有任何明显差异的支持模型“类”有什么好处或必要性?
我喜欢 Universal Relay Boilerplate——总的来说,我可以说他们非常周到地考虑如何将整个东西放在一起,不像大多数样板,文件夹组织等似乎是事后才想到的(我猜是因为你不会这样做一开始有什么重要的东西,或者什么)......但不是URB。或者至少我们对同样的事情很挑剔。
为什么做同样烦人的事...
...除了一件事:我不明白他们为什么这样做。
......两次近距离没有解释?
这是“类型”,由于别名,它实际上与原来的有点不同。
他们显然是有意的
这是我可以在样板文件中找到model
的最显着的差异示例;type
其他是相同的。实际上,我发现没有其他指南建议甚至提到做 amodel.js
而是从type.js
.
我能理解如果
- 某些类型在安全性、性能、美学、设计等方面需要与模型不同
- 某些类型故意跨越模型
- 某些类型出于设计原因封装模型
但是他们到处都这样做,这让我觉得我在这里遗漏了一些重要的东西。
relayjs - React Relay:复杂的突变脂肪查询
我正在创建一个可以投票的投票应用程序。我目前坚持投票进行投票(本质上是创建投票)。
我的架构:
(长话短说:可以从主商店访问民意调查,但他可以直接访问观众的投票和投票(作为字段)。投票也可以从 min store 访问,但投票的投票也可以直接访问.
这个复杂的模式让我对如何定义我的胖查询感到困惑,因为它应该定义所有可能发生变化的东西。
以下是可以改变的:
- 创建了一个投票(因此在胖查询中为 voteEdge)。
- 投票被添加到 store 下的投票连接。
- 投票将添加到查看器下的投票连接。
- 在 store 下的 polls 连接中的某个 poll 下的 votes 连接中添加了一个投票。
- (仅当查看者也是投票的创建者时才有可能):在查看者下的投票连接中的某个投票下的投票连接中添加投票。
所以我的问题是我应该如何在我的胖查询中表达这一点,这是否足够?
或者我应该以某种方式将投票包括在民意调查中?
谢谢!
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
的万一它有帮助: