问题标签 [relayjs]

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 投票
2 回答
2535 浏览

javascript - 继电器中的道具prepareVariables?

嗨,我可以访问容器上 prepareVariables 中的道具吗?

我有一个递归结构:

在根上,我将第一级扩展为:

我想保留整个状态并在以后恢复它。我已经涵盖的保留状态,我将带有状态的对象树传递给所有节点。所以我希望能够在prepareVariables中做到这一点:

我尝试使用构造函数:

但随后中继抱怨提供的预期道具location将由LocationList中继获取数据。

这可能吗 ?

0 投票
1 回答
462 浏览

relayjs - 收到 setVariables 回调后的 props 值

我对以下场景有疑问:如果您使用setVariables中继道具中的方法并更改变量的方式,则中继必须从服务器检索其他数据(例如,单击以下操场示例中的“加载更多故事”接力游戏)。

我希望在收听readyState带有值的回调之后ready = truedone = true道具包含新获取的信息。就像在操场上的例子一样,在numStoriesToLoad将初始值 3 增加 1 之后,道具viewer.storyFeed.edges.length是 4。

实际发生的是,即使在收到命名回调之后,道具仍然具有旧值。如果这种行为是故意的,你如何链接setVariables依赖于前一个调用结果的调用?

0 投票
1 回答
339 浏览

reactjs - 多个中继容器和变量通信

我正在尝试从另一个中继容器更改中继容器的变量。它们没有父子关系,并且都位于两个单独的根容器中。

假设我描述的场景:从上面的 Container 和另一个 Container 更改 $value 变量的最佳方法是什么?有办法只使用 Relay 还是我需要 Redux(或 Reflux)来完成这项工作?

谢谢!

0 投票
1 回答
171 浏览

reactjs - “教”客户端用于 graphql 的端点

我正在调整以在 hapi 服务器的上下文中工作,该服务器还定义了许多其他“常规”api 端点。如果我想以这种方式为 graphql 定义一个端点(类似于 README):

...然后是否需要在客户端代码中进行其他配置以“教”反应/中继应用程序发出他们的发布/获取请求的路径?

0 投票
2 回答
346 浏览

relayjs - 如何避免在 Relay Mutations 中往返大量数据?

假设我有一个 React 组件,它控制textarea包含博客文章内容的 a。当用户更改博客文章时,我使用以下内容更新 Relay Store Mutation

问题:每次我用 Mutation 更新 Store 时,Relay 都会往返于后端往返整个博客文章!假设帖子为 50KB,即使每次去抖动编辑的去抖动为 50KB + 一些字节。有没有办法避免这种情况?

我进行了一些实验,但还没有找到有效的解决方案。我尝试使用带有空有效负载且没有字段配置的乐观响应,但这看起来很奇怪,并且在受控的textarea.

0 投票
2 回答
1272 浏览

relayjs - 使用中继的搜索功能

如何使用中继实现搜索功能?

所以,工作流程是

  • 用户导航到search form

初始化视图时不应有任何查询(如在中继容器中)。

  • 用户填写字段值,然后按操作/搜索按钮。

中继查询被发送到服务器

  • 从服务器接收结果。

filtered页面显示它并中继将结果与本地缓存相协调。

我没有看到 ad hoc 查询的示例,而只是中继容器的一部分(它在组件初始化之前解析)。那么,如何建模呢。它应该像突变吗?

0 投票
1 回答
1371 浏览

pagination - 中继分页:如何初始化“之后”值?

所以基于这里的评论,我已经能够一起破解一个简单的“分页”组件/容器:https ://github.com/facebook/graphql/issues/4#issuecomment-118162627

我说“hack”是因为我就是这么做的。

我通过查看/graphql浏览器响应中的边缘光标来使其工作。问题是..当我没有“事先查询”可以使用时,如何使这项工作适用于项目的第一“页”?

我尝试在查询中离开afterundefined但只收到以下错误:

未捕获的不变违规:callsFromGraphQL():预期变量 $curs 的声明值。

看来,如果您在容器的片段中定义firstafter,那么它们是必需的参数。但是我对 没有任何价值after,那么到底要如何初始化呢?

这个例子抛出了上面的错误:

0 投票
1 回答
943 浏览

reactjs - 具有通量模式的中继缓存?

我真的很想将 Relay 缓存合并到我的 Flux 存储中,这样我就可以进行“时间旅行”并深入了解应用程序。

看起来中继存储和动作都是不可序列化的类,这很糟糕。但看起来我应该能够将缓存与网络请求分开并将缓存保存在 Flux 存储中。

这听起来很有趣还是我在叫错树?

0 投票
1 回答
501 浏览

reactjs - RelayJS:查询任意数据的子组件

我正在构建一个包含许多不同小部件的仪表板。用户可以添加和删除任何小部件,并以他们喜欢的任何顺序放置它们。每个小部件都有自己的数据需求。构建容器层次结构的正确中继方式是什么?

为了提供一些上下文,这是迄今为止的架构:

Widget是一个组件,它接受一个配置对象并相应地渲染相应的组件。

Dashboard组件包含用户添加的许多小部件。

更新

我试图让每一个都ActualWidget成为一个观众的领域。所以架构有点像这样:

然后对于我的Widget容器,我尝试动态插入片段。

那是行不通的。我相信 Relay 静态解析了 QL,因此它无法组成动态片段。然而,这只是我的猜测。

我正在测试RootContainer每个小部件使用的可行性,并将很快更新。

0 投票
0 回答
355 浏览

relayjs - 通过 Relay 中的 GraphQL 突变处理父节点的破坏

我很好奇处理大部分图形可能受到影响的突变的“正确”方法。最好的例子是删除“父”节点导致删除一堆它的孩子。现有的突变配置(FIELDS_CHANGED、NODE_DELETE 等)对于相对简单的操作来说已经足够了,但我不确定处理更复杂的事情的正确方法。

一个具体的例子会有所帮助。假设我们正在开发经典的 Relay 示例应用程序,并且正在使用三种特定类型:ShipFactionUser。让我们假设Ships属于一个Faction(多对一)并且Users有一个favorite_ships连接(多对多)。伪模式可能是这样的:

好吧,酷。我们有一个Faction名为“帝国”的船,它的连接中有一堆船,如“领带战斗机”、“星际驱逐舰”等。然后我们有一个User最喜欢的船只,其中包括“领带战斗机”通过favorite_ships连接。

到目前为止一切都很好。现在一些朋克出现并Faction通过DestroyFactionMutation. 所述突变的输入相当简单:Factionid,但突变对后端的影响很大:

  1. 给定Faction节点被删除
  2. 所有关联的Ship节点也被删除
  3. 所有关联的User { favorite_ship }条目也被删除

因此,我的问题是:如何编写突变有效负载、胖查询和突变配置以使用 Relay 对其进行建模?

想了一会儿,我想大概是这样的:

然后客户端会像这样更新:

  1. 添加一个 NODE_DELETE 配置以删除与Faction对应的节点destroyedFactionId,这是有据可查且直截了当的
  2. 添加一个 NODE_DELETE 配置以删除与该配置相对应的节点ShipdestroyedShipIds但使用什么parentID?您是否需要为每个affectedUserIds.
  3. 如果 #2 不是真的那样工作,也许你可以添加一个 FIELDS_CHANGE 配置,指定user { favorite_ships }可以改变,给定affectedUserIds(也可能通过 REQUIRED_CHILDREN 获取?)

抱歉,如果这是漫无边际且不清楚;希望这种“类型”的突变对于使用 Relay 时间较长的人来说是熟悉的。我可以尝试这些选项,但我想要一些关于这种事情的“最佳”方法的建议。谢谢!