问题标签 [react-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.

0 投票
1 回答
47 浏览

graphql - 如何将初始变量传递给 createPaginationContainer

我正在尝试使用createPaginationContainer一些变量,这是我的代码示例:

在父组件中,我像这样传递我的变量:

现在,在我重新获取之前,我在 getFragmentVariables 或 getVariables 中的日志都没有显示。如何将变量传递给createPaginationContainer初始请求?

0 投票
1 回答
132 浏览

graphql - 我应该尽量减少中继应用程序中的订阅数量吗?

我是使用 graphql 的新手,我们已经使用 elixir 构建了一个后端 graphql 服务器,我们正在使用 react 和 react-relay 构建一个前端应用程序。

我的问题是,在我的查询渲染器的根目录下拥有一个大型订阅是否更好,而不是为单个组件拥有大量较小的订阅。我认为我更喜欢使用大量较小的订阅,而不是更少(甚至一个)非常大的订阅,但有人担心订阅过多会非常沉重。这是有效的吗?

TIA

0 投票
1 回答
224 浏览

pagination - 中继分页 - 光标更改后从存储中删除旧节点

我使用分页容器实现了分页系统。它适用于一个问题。

当我调用 loadMore 函数来获取新节点时,中继从服务器获取节点并添加到旧节点。但我想删除旧节点,只想显示新节点。

例如 $first = 10

当页面第一次加载时,我得到了 10 个节点,在 loadMore 之后,我得到了 20 个节点。但我只想显示新获取的 10 个节点。

我使用了这个分页示例

在 loadMore 操作后,我找不到删除旧节点的方法。

我知道中继分页只打算使用无限滚动,我只是想知道也许有办法解决这个问题。

0 投票
1 回答
81 浏览

reactjs - GraphQL / Relay - 是否需要在主 QueryRenderer 中查询所有表?

我是 GraphQL 和 Relay 的新手,我正在努力处理查询、片段、...传播和传递道具。我认为我不必要地通过许多组件传递道具。我想学习如何将我的数据对象从 QueryRenderer 传送到深度嵌套的组件,跳过所有祖先组件。

假设我有这样的组件结构。EmojisList我需要应用程序深处的组件内的“表情符号”表中的表情符号列表。我不确定在哪里传播或传递道具,或者何时询问实际的标量。

控制台错误

0 投票
1 回答
153 浏览

reactjs - 无法读取未定义的属性“createKeywordTypeNode”

我有一个使用 GraphQl 的反应打字稿应用程序。直到昨天一切正常但现在我在执行命令时收到一个奇怪的错误 "yarn run relay && react-scripts start"

"relay": "relay-compiler --src ./src --schema ./src/modules/open-cti/schema.graphql --language=typescript --extensions=ts --extensions=tsx",

任何人都可以帮助如何解决我正在使用的这个nodejs 12.16.1和 Typescript 版本^3.8.3

在此处输入图像描述

0 投票
1 回答
95 浏览

graphql - 重置分页以重新获取拉动时的默认变量以刷新抛出光标警告?

我的平面清单上有这个道具:

这就是我初始化分页的方式:

这是警告:

警告:中继:光标 `` 后出现意外,必须从列表末尾获取边(YXJyYXljb25uZWN0aW9uOjc=)。

您在 argumentDefinitions 上看到 categoriesCount 的默认值是 4, categoriesCursor 是“”,我认为中继认为我正在重用已经获取的变量,但我想要做的是让分页“忘记它的当前边缘”并像开始拉刷新?

0 投票
0 回答
367 浏览

reactjs - 使用分页容器和加载的无限滚动继电器现代(v11)更多

使用 react 17 和 relay-modern 11 我想建立一个列表,当一个人到达终点时,他们可以点击一个按钮,上面写着加载更多,它会在列表中添加更多条目。这是我到目前为止所拥有的。行是名称和游标

在此处输入图像描述

看到我应该点击加载更多,它应该添加额外的 5 行数据。当我单击加载更多时会发生这种情况

在此处输入图像描述

看到它确实获取了 5 个新节点。我可以说是因为游标是独一无二的。但是它并没有像我想要的那样将它附加到列表中。

当我不断单击加载更多,直到没有更多数据时,如何让这个列表一直持续构建?

这是我的代码:

组件的根:

这是应该列出对象的组件

我从https://github.com/facebook/relay/issues/1705获得了这种方法的灵感

注意:我尝试使用@stream_connection,但后端的 Elixir Absinthe 似乎不支持它。

我知道这很长,所以请任何帮助表示赞赏:)

0 投票
1 回答
141 浏览

javascript - 使用 react-relay 测试时组件未呈现

我正在尝试使用 React Relay 和 React 测试库测试组件

然而,该测试不会使用模拟数据加载组件,而只会返回 Suspense 回退

0 投票
0 回答
149 浏览

graphql - 从中继 11 在 useRefetchableFragment 挂钩上调用 refetch(...) 时出错

我正在从relay 10to迁移,relay 11并且在调用refetchfrom时遇到奇怪的错误useRefetchableFragment。这是我的组件:

然后我单击按钮,它重新获取 graphql 查询但也抛出一个错误:

react_devtools_backend.js:2430 警告:中继:意外调用的refetch优先级高于. 看起来您尝试在高优先级更新下调用,但可能导致组件挂起的更新应该以正常优先级安排。确保你是从钩子里面打电话的。EditClient_refetch_clientuseRefetchableFragment()refetchrefetchstartTransition()useSuspenseTransition()

什么是 ahigh priority update以及如何将onClick事件放到normal priority? 中继文档没有说明如何调用refetch函数。

如果我将refetchcall 放入setTimeout回调中,我不会收到任何错误,但这感觉不对。

0 投票
0 回答
47 浏览

graphql - 为片段返回未定义的中继流类型

我有这些组件设置:RequestLayout > RequestComposer > RequestMessageOptions > LegalSenderDropdown

请求布局.jsx:

RequestComposer.jsx:

RequestMessageOptions.jsx 刚刚将请求传递给 LegalSenderDropdown.jsx:

无法获取request.counterNoticeModule,因为[1].Flow(prop-missing) LegalSenderDropdown.jsx(20, 3): [1]counterNoticeModule中缺少 属性RequestComposer_requestRequestComposer_request

当我查看其他 RequestComposer_request 类型时,我得到了编译器生成的这个:

图片