首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >REQUIRED_CHILDREN连接上的实际属性名称

REQUIRED_CHILDREN连接上的实际属性名称
EN

Stack Overflow用户
提问于 2017-01-16 14:52:33
回答 1查看 30关注 0票数 0

在中继中,当像这样使用REQUIRED_CHILDREN时:

代码语言:javascript
运行
复制
   return [{
      type: 'REQUIRED_CHILDREN',
      children: [
        Relay.QL`
          fragment on Payload {
            myConnection (first: 50) {
              edges {
                node {
                  ${fragment}
                }
              }
            }
          }
        `
      ]
    }]

并通过onSuccess回调读取响应:

代码语言:javascript
运行
复制
Relay.Store.commitUpdate(
  new AboveMutation({  }), { onFailure, onSuccess }
)

响应将属性myConnection转换为散列名称(即__myConnection652K),该名称可能用于防止中继存储中的连接/列表冲突。

但是,由于这是一个REQUIRED_CHILDREN,而我正在手动读取myConnection,所以它只会阻止对它的访问。

在使用onSuccess回调时,有没有办法获得实际的属性名称?

EN

回答 1

Stack Overflow用户

发布于 2017-01-23 06:32:23

正如艾哈迈德所写的:使用REQUIRED_CHILDREN意味着你不会存储结果。其结果是,提供给回调的数据是原始形式(几乎与来自服务器的数据一样),并且data masking不适用。

尽管没有存储数据,但似乎没有理由不将其转换为客户端样式的形状(尽管核心团队成员的意见在这里肯定更合适)。这是最新类型的突变,因此有可能意外地忽略了这种特征。这是正常的,查询被转换为服务器样式的形状,也可能发生相反的转换。然而,到目前为止还不需要它-在将数据保存到存储和更新组件属性的同时,进行了转换。目前大多数Relay团队都高度专注于重写大部分实现,所以我认为这个问题不会很快得到改善。

因此,Ahmed提出的将GraphQLList类型转换为的解决方案似乎是最简单和最可靠的。如果出于任何原因您想要备用连接,有一个选项可以采用作为children提供GraphQL fragment (实际上它的解析形式存储在原始片段的__cachedFragment__属性中),并遍历它以获得所需字段的serializationKey (例如__myConnection652K)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41670902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档