Relay.js 中的根查询创建和删除
Posted
技术标签:
【中文标题】Relay.js 中的根查询创建和删除【英文标题】:Root Query Create and Delete in Relay.js 【发布时间】:2016-01-26 02:06:20 【问题描述】:我试图弄清楚如何在没有父节点的情况下使用 Relay 创建和删除节点。看来NODE_DELETE
/RANGE_DELETE
和RANGE_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 中的根查询创建和删除的主要内容,如果未能解决你的问题,请参考以下文章
使用 RelayRouter 导航 relay.js 应用程序抛出 Invalid State Change 错误
如何通过 createContainer(如流星.js 或 relay.js)传递 react.js 数据
Elasticsearch——创建/查看/删除索引创建/查看/修改/删除文档映射关系