问题标签 [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 回答
74 浏览

javascript - 我可以使用中继更新器配置来更新简单的 graphQL 列表吗?

relay在我的项目中使用最新版本的 (1.6.0) 来处理客户端和服务器之间的数据获取和更新。我有一个书籍列表,我从服务器获取这个列表作为一个简单的 qraphQL 列表(不是边缘/节点列表)。

这是我从服务器获取书籍列表的查询:

我有两个突变用于从数据库中添加和删除一本书。当我调用任何这些突变时,我想更新我的网页。我知道我可以使用该updater功能来更新我的 UI,但是有一些配置,例如NODE_DELETERANGE_ADD用于此类 UI 更新。当我的书单很简单并且不是边缘/节点列表时,如何使用这些配置?

0 投票
1 回答
137 浏览

graphql - Apollo Link 数据突变

我正在尝试对整个应用程序的 apollo-link 处理程序中的数据进行变异:我想删除所有边缘/节点,以简化应用程序中数据的处理。

当我尝试更改数据并返回数据的修改副本时,我的 vue 组件中的 apollo 处理程序会得到一个空的数据对象={}。我也尝试就地改变数据,但这也不起作用:vue 组件获取原始的不变data

这种行为的解释是什么?以及如何实现 Apollo 链接以能够改变数据?这可能吗?

0 投票
1 回答
512 浏览

graphql - 返回 graphql 错误时,如何捕获 RelayObervable Unhandled 错误?

我的后端返回以下响应:

我使用中继的本机应用程序返回以下错误:

当我尝试查询后端并返回上面的 'errorMessage' graphql 错误数组时,会出现此错误。在引发红屏之前,我无法在中继网络层中发现此错误。我的中继环境如下所示:

有没有一种方法可以dispatch(routeToLogin())在返回 graphql 错误时使用而不会看到红屏错误?

编辑 1

对于react-relay-network-modern:您可以像这样添加 noThrow 选项:new RelayNetworkLayer(middlewares, { noThrow: true });

noThrow 选项不存在react-relay-network-layer(接力经典),我能做些什么来解决它吗?

0 投票
1 回答
308 浏览

javascript - 如何使用 GraphQL 突变减少请求数量?

我想减少对graphql 服务器的请求数。 我在数组中有对象,例如

我使用 graphql 突变来添加数组的每个项目。

如果数组有 50 个项目,我需要发送50 个请求来添加所有数据。有什么办法可以减少请求的数量吗?

0 投票
1 回答
424 浏览

reactjs - 为什么需要更新器/更新函数来更新 React Relay 和 Apollo 客户端中的本地缓存?

我正在考虑使用 React Relay 或 Apollo Client。我喜欢 GraphQL 作为一种可以针对任何 API 或数据存储执行的查询语言的想法。

但是,我很惊讶在简单的突变(例如将待办事项添加到列表中)后需要手动(并且强制地)更新存储/缓存。以下是更新程序/更新函数的文档:

http://facebook.github.io/relay/docs/en/mutations.html https://www.apollographql.com/docs/react/essentials/mutations.html

为什么需要用户定义的更新程序函数?

具体来说,为什么我必须编写一个更新函数来处理顺序运行这两个 GraphQL 查询?

为什么 todos 查询不会自动返回新的 todo 项?这是声明性查询语言 IMO 的要点。

0 投票
1 回答
310 浏览

django - 如何在 django-graphene 根模式中为中继创建查看器字段?

如何在graphene-django中为react-relay创建一个查看器字段?这不像预期的那样工作。我正在使用graphene-django v.2.2。姜戈 2.1。反应中继 v1.7.0-rc.1。

0 投票
0 回答
227 浏览

reactjs - Relay 的 RefetchContainer 可以通过 refetch 更新兄弟组件吗?

refetch是否可以通过从同级组件调用来更新组件的 props ?

考虑具有以下结构的组件:

ListMap使用相同的查询端点:allItems

Map调用时refetch,它自己List的数据会更新,但是,它的数据不会更新。

refetch 查询与Home'sQueryRenderer查询相同。似乎 Relay 不会将重新获取的结果映射到存储 的数据的部分List,因为List的道具不会改变。

refetch 是否可以更新 Refetch Container 包含的组件之外的 props?如果没有,一个组件中的更改如何触发重新获取并更新兄弟组件的道具而不将重新获取容器移动到更高级别 - 除非这是唯一的方法?

对于更多上下文,我包含了一些代码来更清楚地说明结构和查询。

使用 Relay,假设我们有一个包装在 a 中的父组件QueryRenderer来执行初始数据获取。

两者都List包含Map片段。List用 Fragment Container 包裹:

Map包装在 Refetch Container 中:

代码已减少,因此可能有错字!让我知道是否是这种情况,我会更新它。

0 投票
0 回答
50 浏览

javascript - React Modern - 过滤 PaginationContainer

我有一个使用 Relay 从数据库中获取的项目列表PaginationContainer。我有一个loadMore运行良好的方法,可以将附加结果提取到现有的显示项目列表中。

现在我正在努力过滤结果。我想以某种方式使用过滤器

此代码有效。但是,此查询的结果会添加到先前的项目列表中。因此,如果默认情况下我在第一次加载页面期间在页面上显示 10 个最新项目并且下一个用户开始过滤,则页面显示前 10 个项目 + 此refetchConnection查询找到的项目。

显然,我只想显示通过 refetchConnection 找到的项目,包括用户输入的值(不是先前查询和当前查询的总和)

0 投票
1 回答
206 浏览

typescript - 在柏树中导入 react-relay-network-modern 失败

问题

嗨伙计,

我正在将TypeScript 3.0.3cypress一起使用,并尝试将react-relay-network-modern模块加载到我的组件中。但是,它总是告诉我该模块不存在,尽管它在我的node_modules文件夹中并在我的package.json中定义。我没有错误,relay-runtime我的继电器工作得很好。

当我像这样进行常规导入时:

我收到以下错误,即找不到模块。

即使我在 tsconfig.json 和 webpack 预处理器中设置别名或导入子文件夹,我也会react-relay-network-modern/(es|lib|...)遇到相同的错误。


配置

我认为最好添加我的配置文件:

/cypress/plugins/webpack.config.js

/tsconfig.json

0 投票
1 回答
125 浏览

reactjs - 中继:与 order_by 或其他参数一起使用时如何从商店获取连接?

我对更新程序中使用的 ConnectionHandler 有疑问。我正在阅读示例并发现

所以连接可以接受 {orderby: 'firstname'}。我的 orderby 字段可以输入名字、名字或全名是什么?因此,如果我按名字排序,我应该使用 orderby = firstname 更新连接,当我按姓氏排序时,我应该通过 orderby = lastname 获得连接......我怎么知道我在哪个 orderby 下,或者我可以更新“当前”?