我正在尝试使用来自apollo/react-hooks
的useMutation钩子,但一定是出了什么问题,因为它就是不能工作(我甚至没有要处理的错误)
下面是我的代码:
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和阿波罗的组合上,正如我在下面的回答中所述
发布于 2020-06-25 17:33:13
好的,我会更新我的问题,但我的问题实际上不是Apollo,而是Appsync和Apollo的组合。正如这里所说的:https://github.com/awslabs/aws-mobile-appsync-sdk-js/issues/448,如果你不在你的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,
});
https://stackoverflow.com/questions/62560442
复制相似问题