作者:庄蜗怕 | 来源:互联网 | 2022-12-21 03:17
我需要一些帮助,使用Apollo 2.1中的新Query和Mutation组件,特别是有多个查询和突变.
我有以下问题:
我有一个graphql请求,取决于以前的graphql结果,我该如何处理?
如何在已经有查询的组件中添加两个不同的突变(在我的组件中我需要做两个不同的操作)?
devboell..
24
你应该嵌套它们.从文档中查看此示例:
const NumbersWithData = () => (
{({ loading: loadingOne, data: { one } }) => (
{({ loading: loadingTwo, data: { two }}) => {
if (loadingOne || loadingTwo) return loading...
return {one} is less than {two}
}}
)}
);
为了帮助保持嵌套的可管理性,您可以检查react-adopt.他们有一个Apollo ToDo应用程序示例,它们结合了Query和多个Mutations.
1> devboell..:
你应该嵌套它们.从文档中查看此示例:
const NumbersWithData = () => (
{({ loading: loadingOne, data: { one } }) => (
{({ loading: loadingTwo, data: { two }}) => {
if (loadingOne || loadingTwo) return loading...
return {one} is less than {two}
}}
)}
);
为了帮助保持嵌套的可管理性,您可以检查react-adopt.他们有一个Apollo ToDo应用程序示例,它们结合了Query和多个Mutations.
我真的不喜欢嵌套的想法.如果我有一个包含20个突变的仪表板怎么办?
@JamieHutber强烈声明,但我同意原则。如果您需要一个组件来执行多个查询/突变,则可能是一种代码味道,因此应尽可能将应用程序分解为多个单独的组件。
2> 小智..:
为此react-apollo
导出compose
功能。使用此功能,您可以一次干净地使用多个组分增强剂。包括多个graphql()甚至Redux connect()增强器。
import { Mutation, compose, graphql } from "react-apollo";
class AddTweet extends Component {
....
....
....
}
export default compose(
graphql(GET_AUTHORS, { name: "getAuthors" }),
graphql(ADD_TWEET, { name: "addTweet" }),
connect(...), // incase you are using Redux
)(AddTweet);
一个重要的注意事项是compose()
首先执行最后一个增强器,然后在增强器列表中向后运行。
还有一件事可以说您this.props.data
现在正在使用,您将获得get undefined
。正义console.log(this.props)
,您将看到道具现在正在发生什么。您将现在有两个属性getAuthors
和addTweet
。所以现在是this.props.name-in-compose.name-of-type-in-typeDefs
ie this.props.getAuthors.getUsers
。我花了一点时间才弄清楚。
我可以在此示例中在哪里使用“静音”吗?