首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阿波罗GraphQL和AppSync: useMutation什么都不做

阿波罗GraphQL和AppSync: useMutation什么都不做
EN

Stack Overflow用户
提问于 2020-06-25 01:05:29
回答 1查看 199关注 0票数 1

我正在尝试使用来自apollo/react-hooks的useMutation钩子,但一定是出了什么问题,因为它就是不能工作(我甚至没有要处理的错误)

下面是我的代码:

代码语言:javascript
运行
复制
import { useQuery, useMutation } from '@apollo/react-hooks';
import { gql } from 'apollo-boost';
import { API, graphqlOperation } from 'aws-amplify';
import { Button } from '@material-ui/core';

const CREATE_USER = gql`
    mutation Createuserfromcognito(
        $CognitoUsername: String!
        $UserRoles: [UserRole]
        $UserDetails: UserDetailsInput
    ) {
        createuserfromcognito(
            CognitoUsername: $CognitoUsername
            UserRoles: $UserRoles
            UserDetails: $UserDetails
        ) {
            UserId
            CognitoUsername
            UserRoles
            UserIDCard {
                number
                picture_path
                verified
            }
            UserDetails {
                UserEmail
                UserFirstName
                UserLastName
                UserFullName
            }
        }
    }
`;

const TestPage = (): JSX.Element => {

    const [addUser] = useMutation(CREATE_USER);

    return (
        <div>
            {user.sub}
            <ExchangeRates />
            <Button
                onClick={() => {
                    // API.graphql(
                    //     graphqlOperation(createuserfromcognito, {
                    //         input: { CognitoUsername: 'TEsfsdf' },
                    //     }),
                    // );
                    addUser({ variables: { CognitoUsername: 'TEsfsdf' } })
                        .then(() => console.log('test'))
                        .catch((err) => console.log(err));
                }}
            >
                Test mutation
            </Button>
        </div>
    );
};

export default TestPage;

我试过使用amplify graphql实现,它可以工作,但我想知道为什么apollo不能工作。

当我单击按钮时,没有任何反应。无请求,无控制台日志。

你知道我哪里错了吗?

编辑:我发现最奇怪的事情是useQuery钩子工作得很好……因此,我不认为这是关于身份验证、端点等的问题。

编辑2:事实上,问题出在AppSync和阿波罗的组合上,正如我在下面的回答中所述

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 17:33:13

好的,我会更新我的问题,但我的问题实际上不是Apollo,而是Appsync和Apollo的组合。正如这里所说的:https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/448,如果你不在你的Appsync客户端中将disableOffline设置为true,突变将会挂起,什么也不做。

这是我的新客户:

代码语言:javascript
运行
复制
const client = new AWSAppSyncClient({
    url: awsconfig.aws_appsync_graphqlEndpoint,
    region: awsconfig.aws_appsync_region,
    auth: {
        type: 'AMAZON_COGNITO_USER_POOLS',
        jwtToken: async (): Promise<string> =>
            (await Auth.currentSession()).getIdToken().getJwtToken(),
    },
    disableOffline: true,
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62560442

复制
相关文章

相似问题

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