3

我试图弄清楚如何在没有父节点的情况下使用 Relay 创建和删除节点。似乎NODE_DELETE/RANGE_DELETERANGE_ADD都需要一个父节点。有没有办法从 Relay.js 中的根查询对象执行创建和删除突变?

注意:我确实找到了可以使用 FIELDS_CHANGE 查询执行创建的示例,但它们缺少任何文档或原因。

4

2 回答 2

3

您应该能够REQUIRED_CHILDREN用于此目的。它目前没有很好的文档记录(甚至没有文档记录),并且它的名称有些混乱(因此,我们有一个重命名它和改进文档的任务)。以后很可能会改名EXTRA_FRAGMENT

通常,当您发出突变时,我们会在“胖查询”(所有可能因突变而改变的字段)和“跟踪查询”(您的应用程序为节点请求的所有字段)之间执行交集到目前为止,当它们发生变化时应该更新),我们将此查询发送到带有突变的服务器。

因此,对于创建一个没有父节点的全新节点的用例,您可以在 中指定一个标识字段idREQUIRED_CHILDREN然后使用它来导航到显示新创建对象的视图。这个答案有一个非常详细的例子,说明你将如何做到这一点。

于 2015-10-27T11:46:15.413 回答
1

你可以client:root作为parentID. 然后你pathToConnection会是['client:root', 'someConnection']

(用 Relay Modern 测试。不确定这是否也适用于 Relay Classic,但无论如何现在都已正式弃用。但这仍然是该问题的最佳 Google 搜索结果之一,因此请回答。)

(在这个 GitHub 问题中找到)

于 2019-04-09T18:18:15.223 回答