Relay.js 中的根查询创建和删除

Posted

技术标签:

【中文标题】Relay.js 中的根查询创建和删除【英文标题】:Root Query Create and Delete in Relay.js 【发布时间】:2016-01-26 02:06:20 【问题描述】:

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

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

【问题讨论】:

这个问题和 React.js 有什么关系? 【参考方案1】:

您应该能够为此目的使用REQUIRED_CHILDREN。它目前没有很好的文档记录(甚至没有文档记录),并且它的名称有些令人困惑(因此,we have a task 用于重命名它并改进文档)。未来可能会更名为EXTRA_FRAGMENT

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

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

【讨论】:

【参考方案2】:

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

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

(发现于this GitHub issue)

【讨论】:

以上是关于Relay.js 中的根查询创建和删除的主要内容,如果未能解决你的问题,请参考以下文章

矩形作为 QML 中的根元素

使用 RelayRouter 导航 relay.js 应用程序抛出 Invalid State Change 错误

如何通过 createContainer(如流星.js 或 relay.js)传递 react.js 数据

Elasticsearch——创建/查看/删除索引创建/查看/修改/删除文档映射关系

Elasticsearch——创建/查看/删除索引创建/查看/修改/删除文档映射关系

C语言:键盘输入1创建顺序表,输入2插入数据,输入3查询数据,输入4删除数据.要求顺序表中的数据为结构体类型