问题标签 [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 投票
0 回答
371 浏览

javascript - 异步等待内部功能无法正常工作?

我有这个函数,我需要在其中定义一个异步函数:

但是refetchVariables没有返回值,它只有在我不使用异步但我需要为此代码执行等待时才有,我需要访问fragmentVariables:

也许使 refetchVariables 不是异步工作?但我不知道如何编码。帮助?顺便说一句,这是异步 refetchVariables 返回的值:

0 投票
2 回答
1037 浏览

graphql - 如何在 Relay Modern 中取消订阅

您如何取消订阅 Relay Modern 中的订阅?

我已经按照如何使用 GraphQL React + Relay的订阅教程进行操作,但是 Relay Modern 网站也没有提及您如何取消订阅。

任何帮助都是极好的。

更新 - - - - -

根据 Lee Byron(参见 GitHub 问题),您只需要dispose() 调用requestSubscription()

对示例进行以下修改后:

./src/subscriptions/NewVoteSubscription.js(添加return到requestSubscription)

./src/components/LinkList.js (在组件上设置订阅然后使用componentWillUnmountdispose())

这是我得到的错误:

0 投票
2 回答
611 浏览

javascript - 如何将过滤器参数传递给中继负载更多

我正在尝试过滤和分页与现代中继和分页容器的连接。这可以正常工作,但是在过滤连接上触发 loadMore() 时不会传输过滤器。

这是我的 React 组件中的提交搜索表单代码,它使用过滤器参数重新获取连接。

这工作正常,因为容器在重新加载时被过滤。

现在当我加载更多

匹配参数不再有效,我再次获得完整列表。

在分页容器中,我将 getVariables() 设置为包含匹配值,console.log(fragmentVariables.matching) 在这里具有正确的值。

但是新连接没有被过滤。

我怀疑问题出在 _loadMore() 调用中,恰好在 relay.loadMore()

或者在@connection 指令中,它应该支持一个过滤器键(我试过过滤器:[$matchstring] 没有运气)。

我怎样才能使这项工作?感谢您抽出时间。

0 投票
1 回答
431 浏览

javascript - 中继 QueryRenderer fragmentContainer 传递的道具与服务器响应不同,因为 id 冲突

我有这个奇怪的问题,基本上:

  1. graphql 请求来自QueryRenderer
  2. 从服务器返回的响应包含数据(从开发工具中的网络选项卡检查)
  3. props填充在QueryRenderer render({ error, props })函数中
  4. propsget 传递到子组件中,用它createFragmentContainer来呈现值
  5. 一个字段的呈现值与响应不同

我不确定中继在从自己的存储中查找数据时在做什么,但我怀疑这是因为缺少id类型中的声明,这里是代码示例:

应用程序.js

记分牌.js

匹配.js

matches来自服务器的示例响应:

渲染值:

所以所有STG值都被覆盖为 42,它不应该被覆盖。

这个问题是因为响应idMatch类型中没有数组导致的吗?这就是为什么中继正在寻找Team具有相同ID的?

0 投票
1 回答
130 浏览

routing - Relay modern + GraphQL + found-relay - 在孩子获得片段之前进行转换

我想构建一个简单的路由,其中​​我的 Table 组件接收片段Table_table

路由.js

Table.js 容器

但是我没有在组件中接收表格道具,而是接收商店(并且表格道具为空)。此外,如果我在查询中设置...Table_table而不是特定字段,我会收到错误消息“Expected prop tableto be provided to Relay(Table), but got undefined” 有什么想法吗?

0 投票
1 回答
962 浏览

javascript - 中继编译 Relay Modern 代码时变量不在范围内错误

我有以下简单的 Relay Modern 代码:

我正在尝试在运行之前对代码进行中继编译,但出现以下错误:

我无法找出为什么我的变量companyId不在范围内,因为它是在文档中所述的variables部分中定义的。QueryRenderer

如果我为 id (example) 使用固定值,node id: "Company:59b2cda12504b914cc398100"代码将被中继编译,我可以正常获取我的数据。当我需要动态选择 id 时,就会出现问题。

0 投票
1 回答
961 浏览

javascript - 中继现代突变,RANGE_ADD / Append

我有一个集合和一个突变来添加一个新项目。在成功突变后,我无法让 Relay Modern 更新 UI。

我有一个PaginationContainer带有以下query:道具的设置

那是正确的。然后我有了一个突变,可以将联系人添加到此列表中。配置RANGE_ADDupdater:回调技术都不起作用。

我像这样触发这个突变

没有错误,只是没有更新。

0 投票
2 回答
482 浏览

javascript - 接力现代,未提供道具

我从我的服务器正确地返回了数据,但是我得到了一个未提供的道具错误。

与以下。

我可以看到数据是从服务器获取的。

服务器响应

而且我还有其他组件遵循类似的工作模式:/ 这是 ContactsPage 组件

0 投票
1 回答
556 浏览

graphql - 突变中继后现代连接处理程序未定义

我正在对多个项目进行突变。但是更新程序中的连接处理程序返回未定义。我正在处理 shopItems 类型,这是相关的架构

这是 shopItems 查询的片段,

添加 shopItems 的突变返回 addedItems 数组,

由于某种原因,连接返回未定义。此外,当我使用 console.log viewerProxy 时,我确实看到了连接键“item_shopItems”,但新的边缘没有出现在那里。以防万一,我在服务器端使用 Node Js - Express。

另一个问题是 addedItem 不是单数,而是一个数组。

0 投票
1 回答
527 浏览

relayjs - 如何刷新 Relay Modern 列表中的项目

在 Relay Modern 中,如何仅刷新列表中的一个项目?

我有一个分页列表。

稍后在代码中,我只想刷新一个项目,而不是整个列表。

我如何在现代接力赛中做到这一点?