问题标签 [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.
javascript - 异步等待内部功能无法正常工作?
我有这个函数,我需要在其中定义一个异步函数:
但是refetchVariables没有返回值,它只有在我不使用异步但我需要为此代码执行等待时才有,我需要访问fragmentVariables:
也许使 refetchVariables 不是异步工作?但我不知道如何编码。帮助?顺便说一句,这是异步 refetchVariables 返回的值:
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 (在组件上设置订阅然后使用componentWillUnmount
它dispose()
)
这是我得到的错误:
javascript - 如何将过滤器参数传递给中继负载更多
我正在尝试过滤和分页与现代中继和分页容器的连接。这可以正常工作,但是在过滤连接上触发 loadMore() 时不会传输过滤器。
这是我的 React 组件中的提交搜索表单代码,它使用过滤器参数重新获取连接。
这工作正常,因为容器在重新加载时被过滤。
现在当我加载更多
匹配参数不再有效,我再次获得完整列表。
在分页容器中,我将 getVariables() 设置为包含匹配值,console.log(fragmentVariables.matching) 在这里具有正确的值。
但是新连接没有被过滤。
我怀疑问题出在 _loadMore() 调用中,恰好在 relay.loadMore()
或者在@connection 指令中,它应该支持一个过滤器键(我试过过滤器:[$matchstring] 没有运气)。
我怎样才能使这项工作?感谢您抽出时间。
javascript - 中继 QueryRenderer fragmentContainer 传递的道具与服务器响应不同,因为 id 冲突
我有这个奇怪的问题,基本上:
- graphql 请求来自
QueryRenderer
- 从服务器返回的响应包含数据(从开发工具中的网络选项卡检查)
props
填充在QueryRenderer
render({ error, props })
函数中props
get 传递到子组件中,用它createFragmentContainer
来呈现值- 一个字段的呈现值与响应不同
我不确定中继在从自己的存储中查找数据时在做什么,但我怀疑这是因为缺少id
类型中的声明,这里是代码示例:
应用程序.js
记分牌.js
匹配.js
matches
来自服务器的示例响应:
渲染值:
所以所有STG
值都被覆盖为 42,它不应该被覆盖。
这个问题是因为响应id
的Match
类型中没有数组导致的吗?这就是为什么中继正在寻找Team
具有相同ID的?
routing - Relay modern + GraphQL + found-relay - 在孩子获得片段之前进行转换
我想构建一个简单的路由,其中我的 Table 组件接收片段Table_table:
路由.js
Table.js 容器
但是我没有在组件中接收表格道具,而是接收商店(并且表格道具为空)。此外,如果我在查询中设置...Table_table而不是特定字段,我会收到错误消息“Expected prop table
to be provided to Relay(Table)
, but got undefined
” 有什么想法吗?
javascript - 中继编译 Relay Modern 代码时变量不在范围内错误
我有以下简单的 Relay Modern 代码:
我正在尝试在运行之前对代码进行中继编译,但出现以下错误:
我无法找出为什么我的变量companyId
不在范围内,因为它是在文档中所述的variables
部分中定义的。QueryRenderer
如果我为 id (example) 使用固定值,node id: "Company:59b2cda12504b914cc398100"
代码将被中继编译,我可以正常获取我的数据。当我需要动态选择 id 时,就会出现问题。
javascript - 中继现代突变,RANGE_ADD / Append
我有一个集合和一个突变来添加一个新项目。在成功突变后,我无法让 Relay Modern 更新 UI。
我有一个PaginationContainer
带有以下query:
道具的设置
那是正确的。然后我有了一个突变,可以将联系人添加到此列表中。配置RANGE_ADD
或updater:
回调技术都不起作用。
我像这样触发这个突变
没有错误,只是没有更新。
graphql - 突变中继后现代连接处理程序未定义
我正在对多个项目进行突变。但是更新程序中的连接处理程序返回未定义。我正在处理 shopItems 类型,这是相关的架构
这是 shopItems 查询的片段,
添加 shopItems 的突变返回 addedItems 数组,
由于某种原因,连接返回未定义。此外,当我使用 console.log viewerProxy 时,我确实看到了连接键“item_shopItems”,但新的边缘没有出现在那里。以防万一,我在服务器端使用 Node Js - Express。
另一个问题是 addedItem 不是单数,而是一个数组。
relayjs - 如何刷新 Relay Modern 列表中的项目
在 Relay Modern 中,如何仅刷新列表中的一个项目?
我有一个分页列表。
稍后在代码中,我只想刷新一个项目,而不是整个列表。
我如何在现代接力赛中做到这一点?