Graphcool 登录后更新 Relay 存储

Posted

技术标签:

【中文标题】Graphcool 登录后更新 Relay 存储【英文标题】:Updating Relay store after Graphcool sign in 【发布时间】:2017-03-07 17:57:20 【问题描述】:

作为我的 webapp 身份验证流程的一部分,我设法在我的 Graph.cool 后端创建了一个用户,现在需要登录(这是一个两步过程,正如 here 所讨论的那样)。这使用了signinUser 突变,我已经成功设置了here。但是,我不知道如何配置突变的getFatQuery()/getConfigs(),以便查看器用户数据在中继存储中正确更新并传播。例如,页眉 (ViewerWidget) 不会自动更新,但如果我重新加载页面,则会显示正确的信息。

【问题讨论】:

【参考方案1】:

Relay 跟踪正在(或曾经)渲染的组件的所有数据需求。发送突变时,它还会查询所有可能更改的数据(通过 FatQuery 给出)并被跟踪。换句话说,如果您的突变的 FatQuery 包含 Relay 尚未跟踪的节点/字段,它们将不会包含在突变的查询中(因为需要该数据的组件只会在第一次渲染时简单地请求它时间)。 REQUIRED_CHILDREN 强制突变查询某些字段,即使它们没有被跟踪。对于需要在 Relay 之外处理数据的情况,它实际上只是一个逃生口。它是 Relay,就像 ref 是 React。

graphcool API 为您提供了一个带有 ID 的查看器根字段。字段用户应该可以有一个 FIELDS_CHANGE 突变(带有查看者 ID)。

【讨论】:

以上是关于Graphcool 登录后更新 Relay 存储的主要内容,如果未能解决你的问题,请参考以下文章

使用中继环境的突变

GraphQL + Relay 现代片段给了我一系列空帖子

在 Graphcool / GraphQL 中发布更新突变时如何“更新”数组/嵌套字段?

如何在不推送到服务器的情况下更新中继存储

中继/路由器登录突变?

NTLM Relay攻击