Reactjs 阿波罗GraphQL&;AppSync:不做任何事情

Reactjs 阿波罗GraphQL&;AppSync:不做任何事情,reactjs,graphql,react-apollo,aws-amplify,Reactjs,Graphql,React Apollo,Aws Amplify,我正试图使用apollo/react hooks中的UseVariation钩子,但一定是出了什么问题,因为它根本不起作用(我甚至没有错误) 这是我的密码: import { useQuery, useMutation } from '@apollo/react-hooks'; import { gql } from 'apollo-boost'; import { API, graphqlOperation } from 'aws-amplify'; import { Button } fro

我正试图使用apollo/react hooks中的UseVariation钩子,但一定是出了什么问题,因为它根本不起作用(我甚至没有错误)

这是我的密码:

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;


从'@apollo/react hooks'导入{useQuery,useVaritation};
从“阿波罗助推”导入{gql};
从“aws amplify”导入{API,graphqlOperation};
从“@material ui/core”导入{Button};
const CREATE_USER=gql`
从Cognito突变(
$CognitoUsername:String!
$UserRoles:[UserRole]
$UserDetails:UserDetailsInput
) {
createuserfromcognito(
CognitoUsername:$CognitoUsername
UserRoles:$UserRoles
UserDetails:$UserDetails
) {
用户ID
同源用户名
用户角色
用户识别卡{
数
图片路径
已证实的
}
用户详细信息{
用户电子邮件
用户名
用户名
用户名
}
}
}
`;
const TestPage=():JSX.Element=>{
const[addUser]=使用变异(创建用户);
返回(
{user.sub}
{
//API.graphql(
//graphqlOperation(createuserfromcognito{
//输入:{CognitoUsername:'TEsfsdf'},
//     }),
// );
addUser({变量:{CognitoUsername:'TEsfsdf'}})
.然后(()=>console.log('test'))
.catch((err)=>console.log(err));
}}
>
试验突变
);
};
导出默认测试页面;
我已经尝试过使用amplify graphql实现,它是有效的,但我想了解为什么apollo one不能

当我点击按钮时,什么也没发生。没有请求,没有控制台日志

你知道我错在哪里吗

编辑:我发现最奇怪的是useQuery挂钩工作得很好。。。所以我不认为这是一个关于身份验证、端点等的问题


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

好的,所以我会更新我的问题,但我的问题实际上不是Apollo,而是AppSync和Apollo的组合。如这里所述:,如果在Appsync客户端中未将
disableOffline
设置为true,则突变将挂起而不执行任何操作

这是我的新客户:

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,
});
const client=新的AWSAPSyncClient({
url:awsconfig.aws_appsync_graphqlenpoint,
地区:awsconfig.aws_appsync_地区,
认证:{
键入:“AMAZON\u COGNITO\u用户\u池”,
jwtToken:async():Promise=>
(等待Auth.currentSession()).getIdToken().getJwtToken(),
},
disableOffline:对,
});

好的,我会更新我的问题,但我的问题不是阿波罗,而是Appsync和阿波罗的结合。如这里所述:,如果在Appsync客户端中未将
disableOffline
设置为true,则突变将挂起而不执行任何操作

这是我的新客户:

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,
});
const client=新的AWSAPSyncClient({
url:awsconfig.aws_appsync_graphqlenpoint,
地区:awsconfig.aws_appsync_地区,
认证:{
键入:“AMAZON\u COGNITO\u用户\u池”,
jwtToken:async():Promise=>
(等待Auth.currentSession()).getIdToken().getJwtToken(),
},
disableOffline:对,
});

No Apollo provider?它在别处有定义,但正如我在编辑中所说的,useQuery钩子工作得很好,所以我不认为这是问题所在。缺少两个变量的值?使用第二个数组元素获得有用的信息,如错误:
const[addUser,{error,loading}]=useMutation(CREATE_USER)
刚刚这么做,
{加载,错误,数据}=true未定义未定义
。它似乎卡在某个地方,但我找不到它的位置。没有Apollo提供程序?它在其他地方定义,但正如我在编辑中所说,useQuery钩子工作得很好,所以我认为这不是问题。缺少两个变量的值?使用第二个数组元素获取有用的信息,如错误:
const[addUser,{error,loading}]=使用变异(创建用户)
刚刚这么做,
{加载,错误,数据}=true未定义未定义
。好像卡在什么地方了,但我找不到地方。