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

react-native - 订阅聊天实用程序的中继 graphql 查询

我正在尝试使用中继 graphql 和 react-native-gifted-chat 创建聊天。我遇到的问题是使用来自我和其他参与者的每条消息刷新查询。查询已经包含分页,但我真的不知道如何处理订阅。useSubscribeToInvalidationState对这种情况有好处,还是您会推荐其他东西?你有什么有用的例子吗?

0 投票
1 回答
134 浏览

javascript - “RelayObservable”类型上不存在属性“then”'。当我尝试在反应中使用中继获取数据时。我不知道为什么会出现这个错误

“RelayObservable”类型上不存在属性“then”。当我尝试在反应中使用继电器获取数据时。

0 投票
1 回答
136 浏览

graphql - GraphQL Relay 自省查询失败:“查询”类型上的未知字段“__type”

我有一个带有 GraphQL 客户端(中继)的 React 应用程序。我需要进行自省查询以获取某个枚举的所有类型。这是我的查询:

当我尝试编译应用程序时,Relay 抛出以下错误:

当我在 GraphIQL(服务器为我提供的游乐场)上尝试完全相同的查询时,没有错误,并且查询成功。

请告诉我我的 GraphQL 查询有什么问题。任何建议都很受欢迎。

0 投票
0 回答
28 浏览

reactjs - 何时使用“react-relay”中的实用程序以及何时使用“relay-environment”

所以我可能知道区别(反应/反应外),但有人可以举个例子吗?

例子

0 投票
1 回答
151 浏览

reactjs - 如何将 React 路由器与中继一起使用?

我正在为 react-router 和中继集成而苦苦挣扎。

截至目前,我坚持这个例子

它使用了useLazyLoadQuery钩子,虽然一切看起来都很好,但我也看到了另一种方法:usePreloadedQuery.

文档说useLazyLoadQuery钩子

如果不小心使用,可能会触发多个嵌套或瀑布式往返,并等到渲染开始数据获取(此时它通常可以比渲染更早开始),从而降低性能。相反,更喜欢 usePreloadedQuery。

但是,尚不清楚如何将其与 react-router 集成,显然,我不想重新发明自己的路由器...

我注意到的另一件事是usePreloadedQuery应该与 useQueryLoader;一起使用。同时在文档中,他们只需调用即可直接加载它loadQuery()

所以我不确定哪种方式是首选。

我最终得到了这样的包装器:

0 投票
1 回答
44 浏览

graphql - 无法获取属性,因为在 null 或 undefined [1] 中缺少声明预期键/值类型的索引签名

我正在测试PermissionDetail具有 graphql 片段的组件,即 PermissionTable 组件的节点数据。从查询中获取模拟数据时,我在这一行中遇到流类型错误const permissionDetail = data.viewPermissionScheme?.grantGroups[0].grantHolders?.edges[0].node.permission;

组件层次结构:

App -> PermissionTable(分页组件片段) -> PermissionDetail(片段)

测试此类组件的正确方法是什么?我是 flow 和 graphql 和中继的新手。所以需要了解测试这个的最佳方法。

0 投票
0 回答
84 浏览

graphql - 中继 ConnectionHandler.getConnectionID() 连接不存在错误

我正在尝试清理我的应用程序中的中继 graphql 流。Atm 在某些地方我仍在使用 fetchKey 和记录失效,我想将其更改为 @appendEdge/@appendNode 指令。不幸的是,每次我试图获得要使用它们的正确连接时,最终都会出现警告说明:

Warning: [Relay][Mutation] The connection with id 'client:ParentType14nif3uirdfut431431hg2rr:__ParentTypeChildrenList_children_connection' doesn't exist.

我正在使用ConnectionHandler.getConnectionID(<id of the parent object of the fragment>, <connection key I've specified>).

有谁知道这里可能是什么问题?此外,如果我理解正确并且如果这有效,我的边缘应该被添加到商店和中继将只确定一切是否是最新的,而不从服务器获取新的边缘,对吧?

0 投票
1 回答
120 浏览

graphql - 从 usePreloadedQuery 捕获错误

我有这段代码,我想捕获 usePaginationFragment 使用的查询中发生的错误。现在发生的情况是,当后端出现问题时,data.queryName 返回 null,并且无法知道错误。问题是我如何在发生错误时收到错误?

谢谢

0 投票
0 回答
17 浏览

graphql - 为什么中继现代分页似乎要返回所有项目?

我认为这对后端来说是一项繁重的操作?

我尝试根据参数修改结果,例如返回 10 个项目进行分页,但它似乎不起作用,它只会在以下情况下起作用:

所有项目的数据在哪里?这不是让应用程序变慢吗?

0 投票
1 回答
98 浏览

graphql - 使用纱线运行中继编译器时出现“ENOTDIR”错误

我正在尝试按照中继文档上的分步指南使用 react-relay 制作应用程序。运行yarn install并添加运行的yarn relay脚本后"relay-compiler --src ./src --schema ./schema.graphql --language typescript"。我收到如下ENOTDIR错误:

然后我更新了我的 node、npm、yarn 版本。并尝试从 github 克隆一些中继示例项目,我收到与所有使用中继的存储库相同的错误消息。