问题标签 [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.
reactjs - `updater` 不适用于 Relay Modern,因为 `ConnectionHandler.getConnection()` 返回 `undefined`
我正在为我的应用程序使用 Relay Modern,并尝试在使用updater
andoptimisticUpdater
进行突变后更新缓存,但它不太有效。
基本上,我有一个Link
带votes
连接的类型 - 这是我的架构的相关部分:
这是我的Link
组件请求的代码votes
片段:
最后,这是CreateVoteMutation
与updater
:
对 only的调用ConnectionHandler.getConnection(viewerProxy, 'Link_votes')
返回undefined
,因此newVote
实际上并没有插入。
有谁看到我做错了什么?
relayjs - 将变量传递给现代中继中的片段容器
我正在使用Relay Modern(兼容)。我有一个片段,其中包含一个具有一个参数的字段,但我找不到从父组件传递变量值的方法:
它最终会说$includeOvertime
未定义。渲染此组件的上下文如下所示:
使用中继经典,您可以通过这种方式传递变量:
如何使用现代继电器实现相同的目标?
javascript - 中继 createFragmentContainer 的现代目的
我一直在尝试 relay-modern 一段时间,我想知道createFragmentContainer
除了描述应该属于Component
.
例如,这就是文档显示它应该如何的方式
父.js
Child.js
但相反Child.js
,我可以用查询重写或拆分组件到 2 个不同的文件,如下所示:
ChildComponent.js
Child.js
它仍然可以工作(Parent.js仍然会识别片段)。所以这让我想知道是否createFragmentContainer
只是为了让语法糖更整洁。
如果有人能用这个照亮,那就太棒了!在有关此的文档中找不到太多内容
graphql - 中继重取不显示结果
我正在尝试创建一个实时搜索结果组件(延迟加载一个)。它第一次完美运行,但重新获取不会更新数据。我在标签中看到了请求和响应Network
!所以它确实获取了数据,但它不将其提供给组件!
知道为什么吗?
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 指令添加到父组件的片段中:将变量传递到中继现代中的片段容器,但没有效果。
graphql - 接力现代并加入怪物
在阅读了 Sashko Stubailo的文章“探索 Relay Modern”之后,显然 Relay Modern 更重要的增强功能之一是查询编译器。编译后的查询会删除重复的引用,并且可以存储在服务器上并使用哈希从客户端引用。这可以防止每个用户都必须向服务器发送完全相同的查询,这可以为高流量 Web 服务节省大量资金。
Join Monster 通过从修饰的 GraphQL 模式推断 SQL 模式来创建粗糙的 JOIN 查询,从而减少往返。它真的会根据您的 GraphQL 查询获取您想要的内容。
这两种技术是互补的还是不兼容的?使用 Join Monster 会绕过中继编译器的优化吗?Join Monster 的优化对于流量较低的 Web 服务是否更重要?
javascript - 在 Relay Modern 中传递给`createPaginationContainer` 的`query` 的作用是什么?
我有一个关于PaginationContainer
Relay Modern 中的 API 的问题。
使用 时createPaginationContainer
,我们向它传递了一个配置对象,该对象还包含一个query
(就像官方示例中的情况一样)。
QueryRenderer
我想知道为什么我们必须这样做,因为在顶层仍然有一个可以负责在层次结构的根部构建查询。难道我们不能省略第二个查询或者我们必须包含它的原因是什么?
我还注意到传递给的根查询QueryRenderer
也需要具有first
和after
参数来启用分页。所以,似乎QueryRenderer
仍然负责编写这个查询,那么传递给的附加查询的作用是什么createPaginationContainer
?
graphql - 如何使用 Relay Modern 突变进行文件上传?
我正在使用react-relay/compat 1.1.0
,我需要编写一个能够上传文件的突变。在 Relay Classic 中,您可以getFiles()
用来支持突变中的文件上传:
但是在Relay Modern文档中没有找到任何上传文件的功能痕迹:
现代继电器是否支持这一点?如果是这样,这样做的方法是什么?谢谢。
typescript - 扩展中继编译器以发出 TypeScript 定义
relay-compiler
我知道修改输出有一些扩展点( https://facebook.github.io/relay/docs/relay-compiler.html#advanced-usage)。我想探索创建 TypeScript 定义而不是 Flow 类型,但我很难找到关于如何开始的好的(任何)资源。该链接引用RelayCompilerPublic.js,但我不确定从那里去哪里。
任何指导将不胜感激。谢谢。
编辑:我刚刚意识到这个问题对于 SO 来说可能太宽泛了。有效地将其移至中继回购,直到我有时间重新表述上述问题。