多重阿波罗突变

Posted

技术标签:

【中文标题】多重阿波罗突变【英文标题】:Multiple Apollo mutations 【发布时间】:2017-03-23 04:50:10 【问题描述】:

我按照Apollo documentation 在单个 React 组件上提供了两个突变(createUser 然后是signInUser),但是我的代码(this.props.signInUser is not a function)无法访问一个突变(“外部”之一 - signInUser) )。也许我启用服务器端的设置掩盖了一个突变,但我看不出在哪里。帮助表示赞赏:)

查看完整代码here。

编辑:使用compose 时出现同样的问题,请参阅code。

【问题讨论】:

【参考方案1】:

这是由我的 apollo 高阶组件引起的,它比仅仅调用 Apollo 的 graphql(与服务器端渲染相关)做了更复杂的事情,并且必须以某种方式屏蔽属性。我为这些突变绕过了这种 s-s-r 行为(不需要),请参阅code。

【讨论】:

【参考方案2】:

你只需要在传递到组件时命名突变,否则它们都称为mutate,并相互覆盖。

(通过使用props函数)

这是一个带有命名突变的完整示例:

https://gist.github.com/Siyfion/a2e9626ed431f8ff91af2c9b8cba1d67

【讨论】:

谢谢,但我已经按照文档中的说明重命名了突变: name: 'createUser' name: 'signInUser' 。如果不提供这样的名称,我相信默认是mutate,而不是mutation。你有关于这个 props 的 Apollo 文档的链接吗? 看后半段:dev.apollodata.com/react/mutations.html#calling-mutations 谢谢,我尝试使用props,但同样的问题。我仍然怀疑它在我的服务器端渲染设置中(我的apollo 高阶组件)。

以上是关于多重阿波罗突变的主要内容,如果未能解决你的问题,请参考以下文章

反应阿波罗突变和乐观更新

突变后反应阿波罗不更新数据

阿波罗的突变过程

如何在阿波罗客户端中将突变链接在一起

如何处理阿波罗客户端上的突变错误?

阿波罗客户端从商店中删除而没有突变