问题标签 [relaymodern]

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 投票
1 回答
1243 浏览

reactjs - `updater` 不适用于 Relay Modern,因为 `ConnectionHandler.getConnection()` 返回 `undefined`

我正在为我的应用程序使用 Relay Modern,并尝试在使用updaterandoptimisticUpdater进行突变后更新缓存,但它不太有效。

基本上,我有一个Linkvotes连接的类型 - 这是我的架构的相关部分:

这是我的Link组件请求的代码votes片段:

最后,这是CreateVoteMutationupdater

对 only的调用ConnectionHandler.getConnection(viewerProxy, 'Link_votes')返回undefined,因此newVote实际上并没有插入。

有谁看到我做错了什么?

0 投票
1 回答
6480 浏览

relayjs - 将变量传递给现代中继中的片段容器

我正在使用Relay Modern(兼容)。我有一个片段,其中包含一个具有一个参数的字段,但我找不到从父组件传递变量值的方法:

它最终会说$includeOvertime未定义。渲染此组件的上下文如下所示:

使用中继经典,您可以通过这种方式传递变量:

如何使用现代继电器实现相同的目标?

0 投票
2 回答
1360 浏览

javascript - 中继 createFragmentContainer 的现代目的

我一直在尝试 relay-modern 一段时间,我想知道createFragmentContainer除了描述应该属于Component.

例如,这就是文档显示它应该如何的方式

父.js

Child.js


但相反Child.js,我可以用查询重写或拆分组件到 2 个不同的文件,如下所示:

ChildComponent.js

Child.js

它仍然可以工作(Parent.js仍然会识别片段)。所以这让我想知道是否createFragmentContainer只是为了让语法糖更整洁。

如果有人能用这个照亮,那就太棒了!在有关此的文档中找不到太多内容

0 投票
0 回答
415 浏览

graphql - 中继重取不显示结果

我正在尝试创建一个实时搜索结果组件(延迟加载一个)。它第一次完美运行,但重新获取不会更新数据。我在标签中看到了请求和响应Network!所以它确实获取了数据,但它不将其提供给组件!

知道为什么吗?

0 投票
1 回答
764 浏览

graphql - Relay Modern 节点不包含片段属性

我的 React 项目中有以下设置:



哪个应该起作用,并从 graphcool 中继端点给我正确的结果。

对中继端点的网络调用确实是正确的,我从我的端点接收到所有 ActivityTypes 及其活动和标题。

但不知何故,在函数 getCardListForActivityType() 中,typeNode 只包含节点的 __id 作为数据,根本没有标题:

在此处输入图像描述

如果我直接插入标题和活动而不是使用

然后数据也会正确传递。因此,必须关闭 Fragment 的某些内容。


为什么网络调用完成并正确使用分片获取数据,但节点对象始终没有获取到数据?

0 投票
2 回答
1869 浏览

javascript - Relay Modern RefetchContainer 道具未传递给组件

我在 Relay Modern 中设置 refetchContainer 时遇到了一些问题。父组件是 QueryRenderer,它运行初始查询,适当地填充子组件的 props (a-prop-riately?eh?eh?!)。refetchContainer 指定了我们所有的变量,并且在输入字段的 onChange 事件中,使用新变量重新运行查询。这一切都很完美,除了孩子的道具永远不会随着收到的新数据而更新。我可以深入了解 Relay 存储,并查看确实收到了带有适当数据的查询。一段时间以来一直在努力解决这个问题,我将不胜感激。可能我缺少一些简单的东西。上帝知道 Relay Modern 的文档很少。

我四处寻找,找不到合适的解决方案。这家伙似乎遇到了类似的问题: relay refetch does not show the result

带有 QueryRenderer 的父组件:

带有 createRefetchContainer 的子组件:

GraphQL 看起来像这样:

适当地进行网络调用,并按预期返回数据。 网络通话

似乎 @arguments 指令可以被排除在 refetch 查询之外:

(删除它似乎没有效果)

我已经尝试按照此处的建议将@arguments 指令添加到父组件的片段中:将变量传递到中继现代中的片段容器,但没有效果。

0 投票
0 回答
159 浏览

graphql - 接力现代并加入怪物

在阅读了 Sashko Stubailo的文章“探索 Relay Modern”之后,显然 Relay Modern 更重要的增强功能之一是查询编译器。编译后的查询会删除重复的引用,并且可以存储在服务器上并使用哈希从客户端引用。这可以防止每个用户都必须向服务器发送完全相同的查询,这可以为高流量 Web 服务节省大量资金。

Join Monster 通过从修饰的 GraphQL 模式推断 SQL 模式来创建粗糙的 JOIN 查询,从而减少往返。它真的会根据您的 GraphQL 查询获取您想要的内容。

这两种技术是互补的还是不兼容的?使用 Join Monster 会绕过中继编译器的优化吗?Join Monster 的优化对于流量较低的 Web 服务是否更重要?

0 投票
0 回答
90 浏览

javascript - 在 Relay Modern 中传递给`createPaginationContainer` 的`query` 的作用是什么?

我有一个关于PaginationContainerRelay Modern 中的 API 的问题。

使用 时createPaginationContainer,我们向它传递了一个配置对象,该对象还包含一个query(就像官方示例中的情况一样)。

QueryRenderer我想知道为什么我们必须这样做,因为在顶层仍然有一个可以负责在层次结构的根部构建查询。难道我们不能省略第二个查询或者我们必须包含它的原因是什么?

我还注意到传递给的根查询QueryRenderer也需要具有firstafter参数来启用分页。所以,似乎QueryRenderer仍然负责编写这个查询,那么传递给的附加查询的作用是什么createPaginationContainer

0 投票
2 回答
1852 浏览

graphql - 如何使用 Relay Modern 突变进行文件上传?

我正在使用react-relay/compat 1.1.0,我需要编写一个能够上传文件的突变。在 Relay Classic 中,您可以getFiles()用来支持突变中的文件上传:

但是在Relay Modern文档中没有找到任何上传文件的功能痕迹:

现代继电器是否支持这一点?如果是这样,这样做的方法是什么?谢谢。

0 投票
0 回答
250 浏览

typescript - 扩展中继编译器以发出 TypeScript 定义

relay-compiler我知道修改输出有一些扩展点( https://facebook.github.io/relay/docs/relay-compiler.html#advanced-usage)。我想探索创建 TypeScript 定义而不是 Flow 类型,但我很难找到关于如何开始的好的(任何)资源。该链接引用RelayCompilerPublic.js,但我不确定从那里去哪里。

任何指导将不胜感激。谢谢。


编辑:我刚刚意识到这个问题对于 SO 来说可能太宽泛了。有效地将其移至中继回购,直到我有时间重新表述上述问题。