Root查询在Relay.js中创建和删除

问题描述 投票:2回答:2

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

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

reactjs graphql relayjs
2个回答
3
投票

您应该能够将REQUIRED_CHILDREN用于此目的。它目前还没有完整记录(甚至是文档记录),并且它有一个令人困惑的名称(因此,we have a task用于重命名和改进文档)。它将来可能会更名为EXTRA_FRAGMENT

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

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


0
投票

你可以通过client:root作为parentID。然后你的pathToConnection将是['client:root', 'someConnection']

(使用Relay Modern进行测试。不确定这是否也适用于Relay Classic,但现在已经正式弃用。但这仍然是此问题的Google搜索结果之一,所以回答。)

(在this GitHub issue找到)

© www.soinside.com 2019 - 2024. All rights reserved.