Apollo - 如何将联合类型传递给 ApolloClient
Apollo - How to pass a Union type to ApolloClient
我正在使用 Shopify GraphQL 应用更改,如底部所示。
我想为 ShopifyReturnUrl
声明一个联合类型,我已经声明了这个:
import gql from 'graphql-tag';
const shopifyReturnUrl = gql`
union ShopifyReturnUrl = String | URL
`;
但是,我如何才能真正将其放入当前定义如下的 ApolloClient 实例中:
const client = new ApolloClient({
fetchOptions: {
credentials: 'include'
},
});
对于上下文,我在我的 React 应用程序中使用它,如下所示:
<ApolloProvider client={client}>
<Component {...pageProps} />
</ApolloProvider>
最后,我真正想要使用的突变 ShopifyReturnUrl
export const SUBSCRIPTION_MODIFY = gql`
mutation($subName: String!, $subPrice: String!, $returnUrl: ShopifyReturnUrl) {
appSubscriptionCreate(
name: $subName
returnUrl: $returnUrl
)
}
`
感谢任何帮助。
谢谢。
这里有几个问题:
- 只能为对象类型创建联合,不能为
String
. 这样的标量创建
- 类型定义写在服务器上,而不是在客户端上。作为客户端,您不能向服务器公开的架构添加其他类型,因为服务器不知道如何处理这些类型。
- 如果
appSubscriptionCreate
采用 returnUrl
参数,那么您传递给该参数的变量(在本例中名为 $returnUrl
)应该与参数具有相同的类型。如果您不知道参数的类型,请检查您的服务器的 documentation or its GraphiQL interface(如果它公开了一个)。在这个特定的例子中,参数的类型是 URL!
,所以你的变量应该是这样的。
我正在使用 Shopify GraphQL 应用更改,如底部所示。
我想为 ShopifyReturnUrl
声明一个联合类型,我已经声明了这个:
import gql from 'graphql-tag';
const shopifyReturnUrl = gql`
union ShopifyReturnUrl = String | URL
`;
但是,我如何才能真正将其放入当前定义如下的 ApolloClient 实例中:
const client = new ApolloClient({
fetchOptions: {
credentials: 'include'
},
});
对于上下文,我在我的 React 应用程序中使用它,如下所示:
<ApolloProvider client={client}>
<Component {...pageProps} />
</ApolloProvider>
最后,我真正想要使用的突变 ShopifyReturnUrl
export const SUBSCRIPTION_MODIFY = gql`
mutation($subName: String!, $subPrice: String!, $returnUrl: ShopifyReturnUrl) {
appSubscriptionCreate(
name: $subName
returnUrl: $returnUrl
)
}
`
感谢任何帮助。
谢谢。
这里有几个问题:
- 只能为对象类型创建联合,不能为
String
. 这样的标量创建
- 类型定义写在服务器上,而不是在客户端上。作为客户端,您不能向服务器公开的架构添加其他类型,因为服务器不知道如何处理这些类型。
- 如果
appSubscriptionCreate
采用returnUrl
参数,那么您传递给该参数的变量(在本例中名为$returnUrl
)应该与参数具有相同的类型。如果您不知道参数的类型,请检查您的服务器的 documentation or its GraphiQL interface(如果它公开了一个)。在这个特定的例子中,参数的类型是URL!
,所以你的变量应该是这样的。